PHP

【PHP】郵便番号(KEN_ALL.CSV)から住所検索して JavaScript で受け取るサンプル

郵便局 - 郵便番号データダウンロード(KEN_ALL.CSV)を使った郵便番号辞書の作り方(PHP サンプル)

郵便局の郵便番号データ(KEN_ALL.CSV)から PHP で住所検索して 検索結果を JavaScript で受け取るサンプルプログラムをご紹介いたします。
この方法は、最新の郵便番号データ(KEN_ALL.CSV)をWeb サービスを提供している Web サーバー内に定期更新することで、外部サーバーを使用せず(外部サーバーの影響を受けない)郵便番号辞書機能を作成・提供することができます。

※参考サイトは最下部にまとめております。

郵便番号データを入手する

最新の郵便番号データは 郵便局 – 郵便番号データダウンロード ページから CSV 形式でダウンロードが可能です。

入手方法

  1. 郵便番号データダウンロード ページを開きます。
  2. [住所の郵便番号(CSV形式)] – [読み仮名データの促音・拗音を小書きで表記するもの](等)をクリックして開きます。
  3. [都道府県一覧] – [全国一括] をクリックして ken_all.zip をダウンロード・展開して KEN_ALL.CSV を保存します。
  4. 対象サーバーに KEN_ALL.CSV をアップロードしておきます。

入力フォームと検索ボタン(HTML サンプル)

郵便番号7桁を入力し [住所検索] ボタンをクリックすると、住所入力欄に住所が自動入力される…というサンプル HTML を作ってみたいと思います。HTML はこんな感じになります…

<!DOCTYPE html>
<html lang='ja'>
	<head>
		<meta charset='UTF-8'>
	</head>
	<body>
		<div>
			郵便番号 <input type='text' id='txtZipCode' value="1000001">
			<input type='button' id='btnSubmit' value="住所検索">
		</div>
		<div>
			住 所 <input type='text' id='txtAddress'>
		</div>
	</body>
</html>

[住所検索] の Click イベント

次に「[住所検索] がクリックされたら…」の部分を jQuery で書くとこんな感じになります…

<script src='jquery-*.*.*.min.js'></script>
<script>
	$('#btnSubmit').on('click', function(){
		$.getJSON("ajax.php?zipcode=" + $('#txtZipCode').val(), function(strData){
			$('#txtAddress').val(strData[0][0]);
		});
	});
</script>

4行目 …(下記で用意する)”ajax.php” にパラメータ “zipcode” を付けて呼び出しています。
5行目 … 返ってきた値を [住所] 入力欄にセットしています。

※外部サーバーの影響を受けないように “jquery-*.*.*.min.js” もサーバー内に保存しておきます。

バックエンド側(ajax.php)

バックエンド側の “ajax.php” の処理は、サーバー内に保存した “KEN_ALL.CSV” を開いて、受け取った “zipcode”(7桁)を一行ずつ検索し、一致する郵便番号があると それをフロントエンド側(JavaScript)に返す…という処理になります。こんな感じです…

<?php
	$fp = fopen("KEN_ALL.CSV", "r");
	
	while($arrData = fgetcsv($fp)){
		if ($arrData == $_GET['zipcode']){
			$arrRtn[0] = mb_convert_encoding($arrData[6] . $arrData[7] . $arrData[8], "UTF-8", "SJIS-win");
			break;
		}
	}
	fclose($fp);
	
	echo json_encode($arrRtn);
?>
  • 4行目 … “KEN_ALL.CSV” の郵便番号は3フィールド目にありますので $arrData[2] と比較しています。
  • 5行目 … “KEN_ALL.CSV” は “シフトJIS” で書かれていますので、mb_convert_encoding で “UTF-8” に変換しています(住所データは7、8、9番目に書き込まれています)。

動作確認

実際に iframe 内に表示させてみます。郵便番号を書き換えて [住所検索] ボタンをクリックしてみてください。

参考サイト

郵便局 – 郵便番号データダウンロード
https://www.post.japanpost.jp/zipcode/download.html

新しいSNSを開発しませんか?

SNS開発18年で2つのSNSを開発・運用中の当社が、あなたのアイデアを形にするお手伝いをします。詳しくはこちら >>