(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桁) |
サンプル・プログラムの解説
0132: /**
0133: * 郵便番号→住所変換WebAPI URLを求める
0134: * @param string $zip 郵便番号(7桁数字,ハイフン無し)
0135: * @return string WebAPI URL / FALSE
0136: */
0137: function getURL_zip2address($zip) {
0138: $res = preg_match('/(\d{3})\-?(\d{4})/', $zip, $arr);
0139: return ($res == 0) ? FALSE : ("https://api.thni.net/jzip/X0401/JSON/{$arr[1]}/{$arr[2]}.js");
0140: }
0142: /**
0143: * 郵便番号→住所変換
0144: * @param string $zip 郵便番号(7桁数字,ハイフン無し)
0145: * @param array $item情報を格納する配列
0146: * @return bool TRUE/FALSE
0147: */
0148: function get_zip2address($zip, &$item) {
0149: //郵便番号から数字以外を除く
0150: $zip = preg_replace('/[^0-9]/ui', '', $zip);
0151:
0152: //リクエストURL取得
0153: $url = getURL_zip2address($zip);
0154: if ($url == FALSE) return FALSE;
0155:
0156: //変換実行
0157: $json = @file_get_contents($url);
0158: if ($json == FALSE) return FALSE;
0159:
0160: $arr = json_decode($json);
0161: if (! isset($arr->state)) return FALSE;
0162:
0163: $item['state'] = (string)$arr->stateName;
0164: $item['city'] = (string)$arr->city;
0165: $item['street'] = (string)$arr->street;
0166:
0167: return TRUE;
0168: }
ユーザー関数 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を呼び出したか確認するためのデバッグ用です。ハイパーリンクのためのものではありません。ご了承ください。