郵便局の郵便番号データ(KEN_ALL.CSV)から PHP で住所検索して 検索結果を JavaScript で受け取るサンプルプログラムをご紹介いたします。
この方法は、最新の郵便番号データ(KEN_ALL.CSV)をWeb サービスを提供している Web サーバー内に定期更新することで、外部サーバーを使用せず(外部サーバーの影響を受けない)郵便番号辞書機能を作成・提供することができます。
※参考サイトは最下部にまとめております。
目次
郵便番号データを入手する
最新の郵便番号データは 郵便局 – 郵便番号データダウンロード ページから CSV 形式でダウンロードが可能です。
入手方法
- 郵便番号データダウンロード ページを開きます。
- [住所の郵便番号(CSV形式)] – [読み仮名データの促音・拗音を小書きで表記するもの](等)をクリックして開きます。
- [都道府県一覧] – [全国一括] をクリックして ken_all.zip をダウンロード・展開して KEN_ALL.CSV を保存します。
- 対象サーバーに 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開発18年で2つのSNSを開発・運用中の当社が、あなたのアイデアを形にするお手伝いをします。