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

(1/1)
前回につづき「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 形式で戻るという API である。
利用にあたっては、この WebAPI の 利用規約を遵守すること。
WebAPI:都道府県リスト取得
URL
http://api.thni.net/jzip/X0401/JSONP/J/state_index.js
応答データ構造(json) 繰り返し name 都道府県名 kana フリガナ
WebAPI:市町村リスト取得
URL
http://api.thni.net/jzip/X0401/JSONP/J/{1}/city_index.js

入力パラメータ
項目名 フィールド名 内  容
都道府県名 1 string 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。
応答データ構造(json) 繰り返し name 市町村名 kana フリガナ
WebAPI:町域リスト取得
URL
http://api.thni.net/jzip/X0401/JSONP/J/{1}/{2}/street_index.js

入力パラメータ
項目名 フィールド名 内  容
都道府県名 1 string 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。
市町村名 2 string 都道府県名。WebAPI:市町村リスト取得で取得した文字列。
応答データ構造(json) 繰り返し name 町域名 kana フリガナ
WebAPI:郵便番号取得
URL
http://api.thni.net/jzip/X0401/JSONP/J/{1}/{2}/{3}.js

入力パラメータ
項目名 フィールド名 内  容
都道府県名 1 string 都道府県名。WebAPI:都道府県リスト取得で取得した文字列。
市町村名 2 string 都道府県名。WebAPI:市町村リスト取得で取得した文字列。
町域名 3 string 町域名。WebAPI:町域リスト取得で取得した文字列。
応答データ構造(json) zipcode 郵便番号 state 都道府県 city 市町村 street 町域

サンプル・プログラムの解説:郵便番号取得

0196: /**
0197:  * 都道府県から郵便番号を求める WebAPI URL
0198:  * @param string $state  都道府県
0199:  * @param string $city   市町村
0200:  * @param string $street 町域
0201:  * @return string WebAPI URL / FALSE
0202: */
0203: function getURL_zip($state$city$street) {
0204:     $state  = urlencode($state);
0205:     $city   = urlencode($city);
0206:     $street = urlencode($street);
0207:     return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/{$city}/{$street}.js";
0208: }
0209: 
0210: /**
0211:  * 都道府県から郵便番号を求める
0212:  * @param string $state 都道府県
0213:  * @param string $city  市町村
0214:  * @param string $street 町域
0215:  * @return string 郵便番号
0216: */
0217: function get_zip($state$city$street) {
0218:     $url = getURL_zip($state$city$street);       //リクエストURL
0219:     if ($url == FALSE)  return FALSE;
0220: 
0221:     $json = @file_get_contents($url);
0222:     if ($json == FALSEreturn FALSE;
0223: 
0224:     $arr = json_decode($json);
0225:     if (count($arr) < 1)    return FALSE;
0226: 
0227:     return $arr->zipcode;
0228: }

ユーザー関数 getURL_zip は、都道府県、市町村、町域から郵便番号を求める WebAPI の URL を返す。

ユーザー関数 get_zip は WebAPI を呼び出し、都道府県、市町村、町域から郵便番号を求める。処理エラーの場合は FALSE を返す。

これ以外の部分は、いままで紹介したプログラムと同じである。

サンプル・プログラムの解説:JavaScript制御

0040: <script type="text/javascript">
0041: <!--
0042: function exec(mode) {
0043:     document.myform.mode.value = mode;
0044:     document.myform.submit();
0045: }
0046: -->
0047: </script>

0261: //--プルダウンメニュー
0262: //--都道府県
0263: $outstr .=<<< EOT
0264: <select name="state" id="state" onChange="exec('state');">
0265: 
0266: EOT;
0267:     foreach ($items['state'] as $val) {
0268:         $selected = ($val == $state) ? 'selected' : '';
0269: $outstr .=<<< EOT
0270: <option value="{$val}" {$selected}>{$val}</option>
0271: 
0272: EOT;
0273:     }
0274: $outstr .=<<< EOT
0275: </select>
0276: 
0277: EOT;
0278: 
0279: //--市町村
0280: $outstr .=<<< EOT
0281: <select name="city" id="city" onChange="exec('city');">
0282: 
0283: EOT;
0284:     foreach ($items['city'] as $val) {
0285:         $selected = ($val == $city) ? 'selected' : '';
0286: $outstr .=<<< EOT
0287: <option value="{$val}" {$selected}>{$val}</option>
0288: 
0289: EOT;
0290:     }
0291: $outstr .=<<< EOT
0292: </select>
0293: 
0294: EOT;
0295: 
0296: //--町域
0297: $outstr .=<<< EOT
0298: <select name="street" id="street" onChange="exec('street');">
0299: 
0300: EOT;
0301:     foreach ($items['street'] as $val) {
0302:         $selected = ($val == $street) ? 'selected' : '';
0303: $outstr .=<<< EOT
0304: <option value="{$val}" {$selected}>{$val}</option>
0305: 
0306: EOT;
0307:     }
0308: $outstr .=<<< EOT
0309: </select>
0310: 
0311: EOT;

都道府県、市町村、町域の 3 つはプルダウンにし、各々を選ぶ都度、WebAPI をコールして右側のリストを更新していくようにする。プルダウンが変化する都度、JavaScript で PHP スクリプトを呼び出すようにしてある。
都道府県、市町村、町域の 3 つが選択されたら、郵便番号を取得する。

参考サイト

(この項おわり)
header