コメントと更新履歴はゼロと無限の間のログ » 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' => '沖縄県'
)
);
}
}