県庁所在地の郵便番号と住所と電話番号

配送日数を調べるのに、郵便番号があると便利なので一覧にして(いたものをコピペして)みました。
あと、配送業者の検索ページへのリンクも載せておきます。

県名 郵便番号 所在地 電話番号
北海道 060-8588 札幌市中央区北三条西6丁目 011-231-4111
青森県 030-8570 青森市長島1-1-1 0177-22-1111
岩手県 020-8570 盛岡市内丸10-1 019-651-3111
宮城県 980-8570 仙台市青葉区本町3-8-1 022-211-2111
秋田県 010-8570 秋田市山王4-1-1 018-860-1031
山形県 990-8570 山形市松波2-8-1 023-630-2164
福島県 960-8670 福島市杉妻町2-16 024-521-1111
茨城県 310-8555 水戸市笠原町978-6 029-301-1111
栃木県 320-8501 宇都宮市塙田1-1-20 028-623-2005
群馬県 371-8570 前橋市大手町1-1-1 027-223-1111
埼玉県 336-8501 さいたま市高砂3-15-1 048-824-2111
千葉県 260-8667 千葉市中央区市場町1-1 043-223-2026
東京都 163-8001 新宿区西新宿2-8-1 03-5321-1111
神奈川県 231-8588 横浜市中区日本大通1 045-210-1111
新潟県 950-8570 新潟市新光町4-1 025-285-5511
富山県 930-8501 富山市新総曲輪1-7 0764-31-4111
石川県 920-8580 金沢市鞍月1-1 076-225-1111
福井県 910-8580 福井市大手3-17-1 0776-21-1111
山梨県 400-8501 甲府市丸の内1-6-1 055-237-1111
長野県 380-8570 長野市大字南長野字幅下692-2 026-232-0111
岐阜県 500-8570 岐阜市藪田南2-1-1 058-272-1111
静岡県 420-8601 静岡市葵区追手町9-6 054-221-2211
愛知県 460-8501 名古屋市中区三の丸3-1-2 052-961-2111
三重県 514-8570 津市広明町13番地 059-224-3070
滋賀県 520-8577 大津市京町4-1-1 077-524-1121
京都府 602-8570 京都市上京区下立売通新町西入藪ノ内町 075-451-8111
大阪府 540-8570 大阪市中央区大手前2丁目 06-6941-0351
兵庫県 650-8567 神戸市中央区下山手通5-10-1 078-341-7711
奈良県 630-8501 奈良市登大路町30番地 0742-22-1101
和歌山県 640-8585 和歌山市小松原通1-1 0734-32-4111
鳥取県 680-8570 鳥取市東町1-220 0857-26-7111
島根県 690-8501 松江市殿町1番地 0852-22-5111
岡山県 700-8570 岡山市内山下2-4-6 086-224-2111
広島県 730-8511 広島市中区基町10-52 082-228-2111
山口県 753-8501 山口市滝町1-1 0839-22-3111
徳島県 770-8570 徳島市万代町1-1 088-621-2500
香川県 760-8570 高松市番町4-1-10 087-831-1111
愛媛県 790-8570 松山市一番町4-4-2 089-941-2111
高知県 780-8570 高知市丸の内1-2-20 088-823-1111
福岡県 812-8577 福岡市博多区東公園7-7 092-651-1111
佐賀県 840-8570 佐賀市城内1-1-59 0952-24-2111
長崎県 850-8570 長崎市江戸町2-13 095-824-1111
熊本県 862-8570 熊本市水前寺6-18-1 096-383-1111
大分県 870-8501 大分市大手町3-1-1 097-536-1111
宮崎県 880-8501 宮崎市橘通東2-10-1 0985-24-1111
鹿児島県 890-8577 鹿児島市鴨池新町10-1 099-286-2111
沖縄県 900-0021 那覇市泉崎1-2-2 098-866-2333

郵便番号から都道府県を調べる

PHPで郵便番号から都道府県を導く処理が必要になりました。

郵便番号から住所を調べるには、日本郵便で公開されているCSVをDBに突っ込んで、クエリを投げるのですが、データサイズもでかいし、市区町村までは必要がないのでとりあえず都道府県だけを簡単に調べる方法がないか探していました。

適当に調べていたところ、郵便番号の先頭2桁を見ればいいだろうという記事が多いものの、一部の都道府県は他県に混ざっているものがあるらしいく、それに対応したコードが見つからなかったので、日本郵便の検索と格闘しながら新しくコードを用意することにしました。

で、以下のようになりました。
とりあえず動けばいいので、処理速度の最適化は確認していません。

/*==============================================================================
 郵便番号から、都道府県番号を取得する簡易版

	要素:
		郵便番号(nnn-nnnn or nnnnnnn)
	戻り値:
		都道府県番号

	※ 備考:
		1 	北海道
		2 	青森県
		3 	岩手県
		4 	宮城県
		5 	秋田県
		6 	山形県
		7 	福島県
		8 	茨城県
		9 	栃木県
		10 	群馬県
		11 	埼玉県
		12 	千葉県
		13 	東京都
		14 	神奈川県
		15 	新潟県
		16 	富山県
		17 	石川県
		18 	福井県
		19 	山梨県
		20 	長野県
		21 	岐阜県
		22 	静岡県
		23 	愛知県
		24 	三重県
		25 	滋賀県
		26 	京都府
		27 	大阪府
		28 	兵庫県
		29 	奈良県
		30 	和歌山県
		31 	鳥取県
		32 	島根県
		33 	岡山県
		34 	広島県
		35 	山口県
		36 	徳島県
		37 	香川県
		38 	愛媛県
		39 	高知県
		40 	福岡県
		41 	佐賀県
		42 	長崎県
		43 	熊本県
		44 	大分県
		45 	宮崎県
		46 	鹿児島県
		47 	沖縄県

 2011-06-06 新設
------------------------------------------------------------------------------*/
function _prefecture_from_zip( $zip ){

	     if( preg_match( '/^01/',     $zip ) ){ return  5; } // "秋田県";   }
	else if( preg_match( '/^02/',     $zip ) ){ return  3; } // "岩手県";   }
	else if( preg_match( '/^03/',     $zip ) ){ return  2; } // "青森県";   }
	else if( preg_match( '/^0[4-9]/', $zip ) ){ return  1; } // "北海道";   }
	else if( preg_match( '/^1[0-9]/', $zip ) ){ return 13; } // "東京都";   }
	// ^20は欠番
	else if( preg_match( '/^2[1-5]/', $zip ) ){ return 14; } // "神奈川県"; }
	else if( preg_match( '/^2[679]/', $zip ) ){ return 12; } // "千葉県";   }
	// ^28は欠番
	else if( preg_match( '/^3[01]/',  $zip ) ){ return  8; } // "茨城県";   }
	else if( preg_match( '/^32/',     $zip ) ){ return  9; } // "栃木県";   }
	else if( preg_match( '/^3[3-6]/', $zip ) ){ return 11; } // "埼玉県";   }
	else if( preg_match( '/^37/',     $zip ) ){ return 10; } // "群馬県";   }
	else if( preg_match( '/^3[89]/',  $zip ) ){ return 20; } // "長野県";   }
	else if( preg_match( '/^40/',     $zip ) ){ return 19; } // "山梨県";   }
	else if( preg_match( '/^4[1-3]/', $zip ) ){ return 22; } // "静岡県";   }
	else if( preg_match( '/^4[4-9]/', $zip ) ){ return 23; } // "愛知県";   }
	else if( preg_match( '/^50/',     $zip ) ){ return 21; } // "岐阜県";   }
	else if( preg_match( '/^51/',     $zip ) ){ return 24; } // "三重県";   }
	else if( preg_match( '/^520\-?046[1-5]$/', $zip ) ){ return 26; } // "京都府";   } // 特殊
	else if( preg_match( '/^52/',     $zip ) ){ return 25; } // "滋賀県";   }
	else if( preg_match( '/^5[3-9]/', $zip ) ){ return 27; } // "大阪府";   }
	else if( preg_match( '/^6[0-2]/', $zip ) ){ return 26; } // "京都府"; }
	else if( preg_match( '/^630\-?027[12]$/',  $zip ) ){ return 27; } // "大阪府"; } // 特殊
	else if( preg_match( '/^63/',     $zip ) ){ return 29; } // "奈良県"; }
	else if( preg_match( '/^64/',     $zip ) ){ return 30; } // "和歌山県"; }
	else if( preg_match( '/^6[5-7]/', $zip ) ){ return 28; } // "兵庫県"; }
	else if( preg_match( '/^68/',     $zip ) ){ return 31; } // "鳥取県"; }
	else if( preg_match( '/^69/',     $zip ) ){ return 32; } // "島根県"; }
	else if( preg_match( '/^7[01]/',  $zip ) ){ return 33; } // "岡山県"; }
	else if( preg_match( '/^7[23]/',  $zip ) ){ return 34; } // "広島県"; }
	else if( preg_match( '/^7[45]/',  $zip ) ){ return 35; } // "山口県"; }
	else if( preg_match( '/^76/',     $zip ) ){ return 37; } // "香川県"; }
	else if( preg_match( '/^77/',     $zip ) ){ return 36; } // "徳島県"; }
	else if( preg_match( '/^78/',     $zip ) ){ return 39; } // "高知県"; }
	else if( preg_match( '/^79/',     $zip ) ){ return 38; } //"愛媛県"; }
	else if( preg_match( '/^8[0-3]/', $zip ) ){ return 40; } // "福岡県"; }
	else if( preg_match( '/^84/',     $zip ) ){ return 41; } // "佐賀県"; }
	else if( preg_match( '/^85/',     $zip ) ){ return 42; } // "長崎県"; }
	else if( preg_match( '/^86/',     $zip ) ){ return 43; } // "熊本県"; }
	else if( preg_match( '/^87/',     $zip ) ){ return 44; } //"大分県"; }
	else if( preg_match( '/^88/',     $zip ) ){ return 45; } // "宮崎県"; }
	else if( preg_match( '/^89/',     $zip ) ){ return 46; } // "鹿児島県"; }
	else if( preg_match( '/^90/',     $zip ) ){ return 47; } // "沖縄県"; }
	else if( preg_match( '/^91/',     $zip ) ){ return 18; } // "福井県"; }
	else if( preg_match( '/^92/',     $zip ) ){ return 17; } // "石川県"; }
	else if( preg_match( '/^93/',     $zip ) ){ return 16; } // "富山県"; }
	else if( preg_match( '/^9[45]/',  $zip ) ){ return 15; } // "新潟県"; }
	else if( preg_match( '/^9[67]/',  $zip ) ){ return  7; } // "福島県"; }
	else if( preg_match( '/^98/',     $zip ) ){ return  4; } // "宮城県"; }
	else if( preg_match( '/^99/',     $zip ) ){ return  6; } // "山形県"; }
	return NULL;

}

突込みがある人は遠慮なくどうぞ。
とりあえず、これで一つ機能が追加できたので、でめたしでめたし。