PHPで郵便番号から住所を求める

(1/1)
PHPで郵便番号から住所を求める
ZIP SEARCH API SERVICE 「JIS X0401」対応版」(IW3 PROJECT)を用い、郵便番号から住所を表示する PHP プログラムを作ってみることにする。

サンプル・プログラム

ZIP SEARCH API SERVICE 「JIS X0401」対応版

ZIP SEARCH API SERVICE 「JIS X0401」対応版」は、入力パラメータ(IN)として GET を、出力結果(OUT)が JSON、JSONP 形式で戻るという API である。
利用にあたっては、この WebAPI の 利用規約を遵守すること。
WebAPIのURL
URL
http://api.thni.net/jzip/X0401/JSONP/{1}/{2}.js

入力パラメータ
項目名 フィールド名 内  容
郵便番号(上3桁) 1 int 郵便番号(上3桁)
郵便番号(下4桁) 2 int 郵便番号(下4桁)
応答データ構造(json) state 都道府県コード stateName 都道府県名 city 市区町村名 street 町域名

サンプル・プログラムの解説

0093: /**
0094:  * 郵便番号→住所変換 WebAPI URLを求める
0095:  * @param string $zip 郵便番号(7桁数字,ハイフン無し)
0096:  * @return string WebAPI URL / FALSE
0097: */
0098: function getURL_zip2address($zip) {
0099:     $res = preg_match('/(\d{3})\-?(\d{4})/', $zip$arr);
0100:     return ($res == 0) ? FALSE : ("http://api.thni.net/jzip/X0401/JSON/{$arr[1]}/{$arr[2]}.js");
0101: }
0102: 
0103: /**
0104:  * 郵便番号→住所変換
0105:  * @param string $zip 郵便番号(7桁数字,ハイフン無し)
0106:  * @param array  $item 情報を格納する配列
0107:  * @return bool TRUE/FALSE
0108: */
0109: function get_zip2address($zip, &$item) {
0110:     $url =  getURL_zip2address($zip);            //リクエストURL
0111:     if ($url == FALSE)  return FALSE;
0112: 
0113:     $json = @file_get_contents($url);
0114:     if ($json == FALSEreturn FALSE;
0115: 
0116:     $arr = json_decode($json);
0117:     if (! isset($arr->state)) return FALSE;
0118: 
0119:     $item['state']  = (string)$arr->stateName;
0120:     $item['city']   = (string)$arr->city;
0121:     $item['street'] = (string)$arr->street;
0122: 
0123:     return TRUE;
0124: }

ユーザー関数 getURL_zip2address は郵便番号の上 3 桁と下 4 桁を分離し、WebAPI の URL を返す。郵便番号は、3 桁目と 4 桁目の間にハイフン '-' があっても無くても処理するようにしてある。分離できない場合にはエラーとして FALSE を返す。

ユーザー関数 get_zip2address は WebAPI を呼び出し、都道府県名、市区町村名、町域名を配列変数 $item に代入する。処理エラーの場合は FALSE を返す。

これ以外の部分は、いままで紹介したプログラムと同じである。
都道府県名、市区町村名、町域名はテキストボックスにしてあるので、このプログラムはそのままユーザー住所登録フォームに応用できるだろう。

質疑応答

【質問】

はじめまして岩渕と申します。
【PHP で郵便番号から住所を求める】についてですが、グーグルでは正常動作が確認され、住所表示されますが
IE(ver11)では表示されないのですがこれは仕様なのでしょうか?
※表示されない=ポップアップが表示され「ファイルを開く」「保存」「キャンセル」の要求をされます。
※VBA で IE を起動、その後スクレイピングで住所を設定することを考えてました。
※正常動作した URL
http://api.thni.net/jzip/X0401/JSONP/028/3318.js

PHPで郵便番号から住所を求める
【回答】

上図の赤い矢印の URL を指してのご質問でしょうか。
この URL は、PHP プログラムがどの WebAPI を呼び出したか確認するためのデバッグ用です。ハイパーリンクのためのものではありません。ご了承ください。

(この項おわり)
header