
サンプル・プログラム
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:町域リスト取得で取得した文字列。 |
解説:郵便番号取得
234: /**
235: * 都道府県から郵便番号を求める WebAPI URL
236: * @param string $state 都道府県
237: * @param string $city 市町村
238: * @param string $street 町域
239: * @return string WebAPI URL / FALSE
240: */
241: function getURL_zip($state, $city, $street) {
242: $state = urlencode($state);
243: $city = urlencode($city);
244: $street = urlencode($street);
245: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/{$city}/{$street}.js";
246: }
248: /**
249: * 都道府県から郵便番号を求める
250: * @param string $state 都道府県
251: * @param string $city 市町村
252: * @param string $street 町域
253: * @return string 郵便番号
254: */
255: function get_zip($state, $city, $street) {
256: $url = getURL_zip($state, $city, $street); //リクエストURL
257: if ($url == FALSE) return FALSE;
258:
259: $json = @file_get_contents($url);
260: if ($json == FALSE) return FALSE;
261:
262: $arr = json_decode($json);
263: return isset($arr->zipcode) ? (string)$arr->zipcode : FALSE;
264: }

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

これ以外の部分は、いままで紹介したプログラムと同じである。
解説:JavaScript制御
135: /**
136: * 都道府県リストを求める WebAPI URL
137: * @return string WebAPI URL / FALSE
138: */
139: function getURL_state() {
140: return 'http://api.thni.net/jzip/X0401/JSON/J/state_index.js';
141: }
143: /**
144: * 都道府県リストを求める
145: * @param array $items 情報を格納する配列
146: * @return bool TRUE/FALSE
147: */
148: function get_state(&$items) {
149: $url = getURL_state(); //リクエストURL
150: if ($url == FALSE) return FALSE;
151:
152: $json = @file_get_contents($url);
153: if ($json == FALSE) return FALSE;
154:
155: $arr = json_decode($json);
156: if (count($arr) < 1) return FALSE;
157:
158: foreach ($arr as $val) {
159: $items[] = (string)$val->name;
160: }
161:
162: return TRUE;
163: }
165: /**
166: * 都道府県から市町村リストを求める WebAPI URL
167: * @param string $state 都道府県
168: * @return string WebAPI URL / FALSE
169: */
170: function getURL_city($state) {
171: $state = urlencode($state);
172: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/city_index.js";
173: }
175: /**
176: * 都道府県から市町村リストを求める
177: * @param string $state 都道府県
178: * @param array $items 情報を格納する配列
179: * @return bool TRUE/FALSE
180: */
181: function get_city($state, &$items) {
182: $url = getURL_city($state); //リクエストURL
183: if ($url == FALSE) return FALSE;
184:
185: $json = @file_get_contents($url);
186: if ($json == FALSE) return FALSE;
187:
188: $arr = json_decode($json);
189: if (count($arr) < 1) return FALSE;
190:
191: foreach ($arr as $val) {
192: $items[] = (string)$val->name;
193: }
194:
195: return TRUE;
196: }
198: /**
199: * 都道府県から町域リストを求める WebAPI URL
200: * @param string $state 都道府県
201: * @param string $city 市町村
202: * @return string WebAPI URL / FALSE
203: */
204: function getURL_street($state, $city) {
205: $state = urlencode($state);
206: $city = urlencode($city);
207: return "http://api.thni.net/jzip/X0401/JSON/J/{$state}/{$city}/street_index.js";
208: }
210: /**
211: * 都道府県から町域リストを求める
212: * @param string $state 都道府県
213: * @param string $city 市町村
214: * @param array $items 情報を格納する配列
215: * @return bool TRUE/FALSE
216: */
217: function get_street($state, $city, &$items) {
218: $url = getURL_street($state, $city); //リクエストURL
219: if ($url == FALSE) return FALSE;
220:
221: $json = @file_get_contents($url);
222: if ($json == FALSE) return FALSE;
223:
224: $arr = json_decode($json);
225: if (count($arr) < 1) return FALSE;
226:
227: foreach ($arr as $val) {
228: $items[] = (string)$val->name;
229: }
230:
231: return TRUE;
232: }
402: //検索実行
403: $url = getURL_state();
404: $res = get_state($items['state']);
405: if (! $res) {
406: $message = 'error > 都道府県が検索できません.';
407: } else if ($state != '') {
408: $url = getURL_city($state);
409: $res = get_city($state, $items['city']);
410: if (! $res) {
411: $message = 'error > この都道府県では検索できません.';
412: } else if ($city != '') {
413: $url = getURL_street($state, $city);
414: $res = get_street($state, $city, $items['street']);
415: if (! $res) {
416: $message = 'error > この市町村では検索できません.';
417: } else if ($street != '') {
418: $url = getURL_zip($state, $city, $street);
419: $zip = get_zip($state, $city, $street);
420: if (! $res) {
421: $message = 'error > 郵便番号が検索できません.';
422: }
423: }
424: }
425: }
都道府県、市町村、町域の3つが選択されたら、郵便番号を取得する。
参考サイト
- ZIP SEARCH API SERVICE 「JIS X0401」対応版(IW3 PROJECT)