文書の過去の版を表示しています。
コメントと更新履歴はゼロと無限の間のログ » TodofukenSelect.phpでどうぞ。
※この日本地図はただのイメージ画像なので、ソースコードとは無関係です。
都道府県を選択するselect要素の中身のoption要素を生成するPHPのクラス。
この前、Webのフォームで住所を入力した際に都道府県選択リストが普通に使い辛くて、憤慨して作った。
ようするに、都道府県はブロック(地方)ごとにoptgroup要素でまとめようよという主張です。
都道府県データはマスタから取得することが多いけど、ほとんど変化しないんでソースコードに埋め込んでいてもいい気がする。
<?php /** * @version 0.1.0 */ class TodofukenSelect { /** * 全都道府県のoption要素を取得する * @param string $selected 選択状態にする都道府県の区分 or 都道府県名 * @return string (省略可)都道府県を選択するselect要素のhtml */ public static function getOptions($selected = '') { $list = TodofukenSelect::_getList(); $s = ''; foreach ($list as $block => $kens) { $s .= "<optgroup label=\"$block\">\n"; foreach ($kens as $kbn => $ken) { if ($kbn == $selected || $ken == $selected) { $attr = ' selected="selected"'; } else { $attr = ''; } $s .= "<option value=\"$kbn\"$attr>$ken</option>\n"; } $s .= "</optgroup>\n"; } return $s; } /** * 都道府県の区分から都道府県名を取得する * @param string $kbn 都道府県の区分 * @return string 都道府県名 */ public static function getName($kbn) { $list = TodofukenSelect::_getList(); foreach ($list as $block => $kens) { if ($kens[$kbn]) { return $kens[$kbn]; } } return false; } /** * 都道府県一覧を取得する * @return array 都道府県一覧 */ private static function _getList() { return array( '北海道・東北' => array( '01' => '北海道' , '02' => '青森県' , '03' => '岩手県' , '04' => '宮城県' , '05' => '秋田県' , '06' => '山形県' , '07' => '福島県' ), '関東' => array( '08' => '茨城県' , '09' => '栃木県' , '10' => '群馬県' , '11' => '埼玉県' , '12' => '千葉県' , '13' => '東京都' , '14' => '神奈川県' ), '北陸・甲信越' => array( '15' => '新潟県' , '16' => '富山県' , '17' => '石川県' , '18' => '福井県' , '19' => '山梨県' , '20' => '長野県' ), '東海' => array( '21' => '岐阜県' , '22' => '静岡県' , '23' => '愛知県' , '24' => '三重県' ), '関西' => array( '25' => '滋賀県' , '26' => '京都府' , '27' => '大阪府' , '28' => '兵庫県' , '29' => '奈良県' , '30' => '和歌山県' ), '中国' => array( '31' => '鳥取県' , '32' => '島根県' , '33' => '岡山県' , '34' => '広島県' , '35' => '山口県' ), '四国' => array( '36' => '徳島県' , '37' => '香川県' , '38' => '愛媛県' , '39' => '高知県' ), '九州' => array( '40' => '福岡県' , '41' => '佐賀県' , '42' => '長崎県' , '43' => '熊本県' , '44' => '大分県' , '45' => '宮崎県' , '46' => '鹿児島県' , '47' => '沖縄県' ) ); } }