zipcodebaseというサイトを使ってみます。
こちらのサイトでregisterしてapi keyを取得します。
https://zipcodebase.com/
– ブラウザで試す
https://app.zipcodebase.com/api/v1/search?apikey=${api_key}&codes=1000001
-> response
{“query”:{“codes”:[“1000001″],”country”:null},”results”:{“1000001”:[{“postal_code”:”100-0001″,”country_code”:”JP”,”latitude”:”35.67490000″,”longitude”:”139.76190000″,”city”:”Chiyoda”,”state”:”Tokyo To”,”city_en”:”Chiyoda”,”state_en”:”Tokyo To”,”state_code”:”40″,”province”:”Chiyoda Ku”,”province_code”:”1864529″},{“postal_code”:”1000-001″,”country_code”:”PT”,”latitude”:”38.71670000″,”longitude”:”-9.13330000″,”city”:”Lisboa”,”state”:”Lisboa”,”city_en”:”Lisboa”,”state_en”:”Lisboa”,”state_code”:”14″,”province”:”Lisboa”,”province_code”:”1106″}]}}
– formでやってみる
<form action="https://app.zipcodebase.com/api/v1/search" method="post">
<input type="text" name="codes">
<input type="hidden" name="apikey" value="${api-key}">
<input type="submit" value="送信">
</form>
-> エラーになります。
– PHPで書きます。
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = [
"codes" => "1000001",
];
curl_setopt($ch, CURLOPT_URL, "https://app.zipcodebase.com/api/v1/search?". http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"apikey: ${api_key}",
));
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
print("<pre>");
var_dump($json);
print("</pre>");
### フォームでzip codeを送信して結果を表示する様に書きたい
– get methodで値があればcurlする様に書く
$postcode = $_GET['postcode'];
if($postcode != null) {
echo $postcode;
}
– htmlのformと合わせて書きます。
$postcode = $_GET['postcode'];
if($postcode != null) {
$postcode = str_replace('#', '', $postcode);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = [
"codes" => $postcode,
];
curl_setopt($ch, CURLOPT_URL, "https://app.zipcodebase.com/api/v1/search?". http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"apikey: ${api-key}",
));
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
// echo $json['result'][$postcode][0]['city'];
$city = $json->results->$postcode[0]->city;
$state = $json->results->$postcode[0]->state;
$country_code = $json->results->$postcode[0]->country_code;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Worldwide PostCode Search</h1>
<form action="/" method="GET">
<input type="text" name="postcode" placeholder="ハイフン抜きで入力してください">
<input type="submit" value="送信">
</form>
<br><br>
<?php
if($city != null){
echo "<h3>「" . $postcode . "」のZipcode情報です!". "</h3>";
echo "Country:" .$country_code . "<br>";
echo "State:" .$state . "<br>";
echo "City:" .$city . "<br>";
}
?>
Coountry, state, cityを取れます。
$responseをvar_dumpすることで、jsonでどの項目が取得できるか確認できます。
$json = json_decode($response);
var_dump($json);
ライブラリやツールも否応なしに海外の物を使うから勉強になります。
リンクを追加