
(2022年1月15日)PHP8対応,リファラ・チェック改良
サンプル・プログラム
zip2address.php | サンプル・プログラム本体 |
ZIP SEARCH API SERVICE 「JIS X0401」対応版
利用にあたっては、このWebAPIの 利用規約を遵守すること。
URL |
---|
https://api.thni.net/jzip/X0401/JSONP/{1}/{2}.js |
フィールド名 | 要否 | 内 容 |
---|---|---|
1 | 必須 | 郵便番号(上3桁) |
2 | 必須 | 郵便番号(下4桁) |
サンプル・プログラムの解説
132: /**
133: * 郵便番号→住所変換 WebAPI URLを求める
134: * @param string $zip 郵便番号(7桁数字,ハイフン無し)
135: * @return string WebAPI URL / FALSE
136: */
137: function getURL_zip2address($zip) {
138: $res = preg_match('/(\d{3})\-?(\d{4})/', $zip, $arr);
139: return ($res == 0) ? FALSE : ("http://api.thni.net/jzip/X0401/JSON/{$arr[1]}/{$arr[2]}.js");
140: }
142: /**
143: * 郵便番号→住所変換
144: * @param string $zip 郵便番号(7桁数字,ハイフン無し)
145: * @param array $item 情報を格納する配列
146: * @return bool TRUE/FALSE
147: */
148: function get_zip2address($zip, &$item) {
149: //郵便番号から数字以外を除く
150: $zip = preg_replace('/[^0-9]/ui', '', $zip);
151:
152: //リクエストURL取得
153: $url = getURL_zip2address($zip);
154: if ($url == FALSE) return FALSE;
155:
156: //変換実行
157: $json = @file_get_contents($url);
158: if ($json == FALSE) return FALSE;
159:
160: $arr = json_decode($json);
161: if (! isset($arr->state)) return FALSE;
162:
163: $item['state'] = (string)$arr->stateName;
164: $item['city'] = (string)$arr->city;
165: $item['street'] = (string)$arr->street;
166:
167: return TRUE;
168: }

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

これ以外の部分は、いままで紹介したプログラムと同じである。
都道府県名、市区町村名、町域名はテキストボックスにしてあるので、このプログラムはそのままユーザー住所登録フォームに応用できるだろう。
質疑応答
はじめまして岩渕と申します。
【PHPで郵便番号から住所を求める】についてですが、グーグルでは正常動作が確認され、住所表示されますが
IE(ver11)では表示されないのですがこれは仕様なのでしょうか?
※表示されない=ポップアップが表示され「ファイルを開く」「保存」「キャンセル」の要求をされます。
※VBAでIEを起動、その後スクレイピングで住所を設定することを考えてました。
※正常動作したURL
https://api.thni.net/jzip/X0401/JSONP/028/3318.js

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