サンプル・プログラム
address2zip.php | サンプル・プログラム本体 |
ZIP SEARCH API SERVICE 「JIS X0401」対応版
利用にあたっては、このWebAPIの 利用規約を遵守すること。
URL |
---|
http://api.thni.net/jzip/X0401/JSONP/{1}/{2}.js |
URL |
---|
https://api.thni.net/jzip/X0401/JSONP/J/{1}/city_index.js |
フィールド名 | 要否 | 内 容 |
---|---|---|
1 | 必須 | 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。 |
URL |
---|
https://api.thni.net/jzip/X0401/JSONP/J/{1}/{2}/street_index.js |
フィールド名 | 要否 | 内 容 |
---|---|---|
1 | 必須 | 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。 |
2 | 必須 | 市町村名。WebAPI:市町村リスト取得で取得した文字列。 |
URL |
---|
https://api.thni.net/jzip/X0401/JSONP/J/{1}/{2}/{3}.js |
フィールド名 | 要否 | 内 容 |
---|---|---|
1 | 必須 | 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。 |
2 | 必須 | 市町村名。WebAPI:市町村リスト取得で取得した文字列。 |
3 | 必須 | 町域名。WebAPI:町域リスト取得で取得した文字列。 |
解説:郵便番号取得
0234: /**
0235: * 都道府県から郵便番号を求める WebAPI URL
0236: * @param string $state 都道府県
0237: * @param string $city 市町村
0238: * @param string $street 町域
0239: * @return string WebAPI URL / FALSE
0240: */
0241: function getURL_zip($state, $city, $street) {
0242: $state = urlencode($state);
0243: $city = urlencode($city);
0244: $street = urlencode($street);
0245: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/{$city}/{$street}.js";
0246: }
0248: /**
0249: * 都道府県から郵便番号を求める
0250: * @param string $state 都道府県
0251: * @param string $city 市町村
0252: * @param string $street 町域
0253: * @return string 郵便番号
0254: */
0255: function get_zip($state, $city, $street) {
0256: $url = getURL_zip($state, $city, $street); //リクエストURL
0257: if ($url == FALSE) return FALSE;
0258:
0259: $json = @file_get_contents($url);
0260: if ($json == FALSE) return FALSE;
0261:
0262: $arr = json_decode($json);
0263: return isset($arr->zipcode) ? (string)$arr->zipcode : FALSE;
0264: }
ユーザー関数 get_zip はWebAPIを呼び出し、都道府県、市町村、町域から郵便番号を求める。処理エラーの場合は FALSE を返す。
これ以外の部分は、いままで紹介したプログラムと同じである。
解説:JavaScript制御
0135: /**
0136: * 都道府県リストを求める WebAPI URL
0137: * @return string WebAPI URL / FALSE
0138: */
0139: function getURL_state() {
0140: return 'http://api.thni.net/jzip/X0401/JSON/J/state_index.js';
0141: }
0143: /**
0144: * 都道府県リストを求める
0145: * @param array $items 情報を格納する配列
0146: * @return bool TRUE/FALSE
0147: */
0148: function get_state(&$items) {
0149: $url = getURL_state(); //リクエストURL
0150: if ($url == FALSE) return FALSE;
0151:
0152: $json = @file_get_contents($url);
0153: if ($json == FALSE) return FALSE;
0154:
0155: $arr = json_decode($json);
0156: if (count($arr) < 1) return FALSE;
0157:
0158: foreach ($arr as $val) {
0159: $items[] = (string)$val->name;
0160: }
0161:
0162: return TRUE;
0163: }
0165: /**
0166: * 都道府県から市町村リストを求める WebAPI URL
0167: * @param string $state 都道府県
0168: * @return string WebAPI URL / FALSE
0169: */
0170: function getURL_city($state) {
0171: $state = urlencode($state);
0172: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/city_index.js";
0173: }
0175: /**
0176: * 都道府県から市町村リストを求める
0177: * @param string $state 都道府県
0178: * @param array $items 情報を格納する配列
0179: * @return bool TRUE/FALSE
0180: */
0181: function get_city($state, &$items) {
0182: $url = getURL_city($state); //リクエストURL
0183: if ($url == FALSE) return FALSE;
0184:
0185: $json = @file_get_contents($url);
0186: if ($json == FALSE) return FALSE;
0187:
0188: $arr = json_decode($json);
0189: if (count($arr) < 1) return FALSE;
0190:
0191: foreach ($arr as $val) {
0192: $items[] = (string)$val->name;
0193: }
0194:
0195: return TRUE;
0196: }
0198: /**
0199: * 都道府県から町域リストを求める WebAPI URL
0200: * @param string $state 都道府県
0201: * @param string $city 市町村
0202: * @return string WebAPI URL / FALSE
0203: */
0204: function getURL_street($state, $city) {
0205: $state = urlencode($state);
0206: $city = urlencode($city);
0207: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/{$city}/street_index.js";
0208: }
0210: /**
0211: * 都道府県から町域リストを求める
0212: * @param string $state 都道府県
0213: * @param string $city 市町村
0214: * @param array $items 情報を格納する配列
0215: * @return bool TRUE/FALSE
0216: */
0217: function get_street($state, $city, &$items) {
0218: $url = getURL_street($state, $city); //リクエストURL
0219: if ($url == FALSE) return FALSE;
0220:
0221: $json = @file_get_contents($url);
0222: if ($json == FALSE) return FALSE;
0223:
0224: $arr = json_decode($json);
0225: if (count($arr) < 1) return FALSE;
0226:
0227: foreach ($arr as $val) {
0228: $items[] = (string)$val->name;
0229: }
0230:
0231: return TRUE;
0232: }
0402: //検索実行
0403: $url = getURL_state();
0404: $res = get_state($items['state']);
0405: if (! $res) {
0406: $message = 'error > 都道府県が検索できません.';
0407: } else if ($state != '') {
0408: $url = getURL_city($state);
0409: $res = get_city($state, $items['city']);
0410: if (! $res) {
0411: $message = 'error > この都道府県では検索できません.';
0412: } else if ($city != '') {
0413: $url = getURL_street($state, $city);
0414: $res = get_street($state, $city, $items['street']);
0415: if (! $res) {
0416: $message = 'error > この市町村では検索できません.';
0417: } else if ($street != '') {
0418: $url = getURL_zip($state, $city, $street);
0419: $zip = get_zip($state, $city, $street);
0420: if (! $res) {
0421: $message = 'error > 郵便番号が検索できません.';
0422: }
0423: }
0424: }
0425: }
都道府県、市町村、町域の3つが選択されたら、郵便番号を取得する。
参考サイト
- ZIP SEARCH API SERVICE 「JIS X0401」対応版(IW3 PROJECT)