郵便番号から都道府県を判定

2017年3月24日

郵便番号の上2桁で都道府県が分かるので、そういう関数を作成しました。

  1. 郵便番号の付定方法 - Wikipedia
  2. 日本の郵便番号 - Wikipedia

※追記 2018/6/21※

※郵便番号の上2桁だけでは都道府県を判別することはできないみたいです。m(__)m
※ご指摘をいただきました、誠にありがとうございます。m(__)m

  1. 他都府県の郵便番号を付している地域 - Wikipedia
郵便番号の上2桁で都道府県が違う場合
郵便番号の上2桁都道府県
01青森県
秋田県
31茨城県
栃木県
34栃木県
埼玉県
38新潟県
群馬県
長野県
43愛知県
静岡県
49愛知県
三重県
52滋賀県
京都府
56大阪府
兵庫県
61京都府
大阪府
63大阪府
奈良県
64三重県
奈良県
和歌山県
68島根県
鳥取県
81福岡県
長崎県
83福岡県
大分県
84佐賀県
長崎県
87福岡県
大分県
92石川県
福井県
93富山県
石川県
94新潟県
長野県

下記表にあるように郵便番号の上6桁でも都道府県が違う場合があるみたいなので、厳密に判定したい場合は7桁すべて必要みたいです。(郵便番号がすべて同じで都道府県が違う場合もありえる?)

郵便番号の上6桁で都道府県が違う場合
郵便番号の上6桁都道府県
384009群馬県
長野県
498000三重県
愛知県
618000大阪府
京都府
871000大分県
福岡県
922067石川県
福井県
郵便番号がすべて同じで都道府県が違う場合
郵便番号都道府県
4980000愛知県
三重県
6180000京都府
大阪府
8710000大分県
福岡県
  1. 郵便番号データダウンロード - 日本郵便

番号の振り分け

郵便番号の上2桁と都道府県
都道府県 番号
北海道00・04-09
青森県03
岩手県02
宮城県98
秋田県01
山形県99
福島県96・97
茨城県30・31
栃木県32
群馬県37
埼玉県33-36
千葉県26-29
東京都10-20
神奈川県21-25
新潟県94・95
富山県93
石川県92
福井県91
山梨県40
長野県38・39
岐阜県50
静岡県41-43
愛知県44-49
三重県51
滋賀県52
京都府60-62
大阪府53-59
兵庫県65-67
奈良県63
和歌山県64
鳥取県68
島根県69
岡山県70・71
広島県72・73
山口県74・75
徳島県77
香川県76
愛媛県79
高知県78
福岡県80-83
佐賀県84
長崎県85
熊本県86
大分県87
宮崎県88
鹿児島県89
沖縄県90

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

ついでに都道府県の配列。

$pref_arr = array(
		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 => '沖縄県'
);