PHP curl WEB APIを使って郵便コードから住所を取得してみる

環境:
PHP 7

curlでWEB APIを叩くために必要な手順は下記の通りです。

php7
<?php
$ch = curl_init(); //1.初期化
curl_setopt($ch, CURLOPT_URL,'URL'); //2.URLをセット
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //3.HTTP リクエストをセット(GET,POST等)
//.. 4.その他必要オプション
$result= curl_exec($ch); //5.実行して、レスポンスを取得
curl_close($ch); // 6.終了


大体の場合、この流れでWEB APIを叩くことができます。
今回は、zipcloudさんの郵便番号から住所データを取得するWEB APIを使わせていただきます。次にサンプルを示します。

php7
<?php
$baseurl = "http://zipcloud.ibsnet.co.jp/api/search"; 
$zipcode = "5300012"; //郵便番号

$ch = curl_init(); //1.初期化
curl_setopt($ch, CURLOPT_URL,$baseurl . '?zipcode=' . $zipcode); //2.URLをセット
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //3.HTTP リクエストをセット(GET,POST等)
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //文字列で返す
//curl_setopt($ch, CURLOPT_HEADER, true);   // ヘッダーも出力する

 //..4.その他必要オプション
$result = curl_exec($ch); //5.実行して、レスポンスを取得
var_dump($result); // 出力
print("-------------------------------");
$resultarr = json_decode($result,true); //jsonを配列に
var_dump($resultarr); //配列で出力

curl_close($ch); // 6.終了

この場合、下記のように出力されます。

output
string '{
    "message": null,
    "results": [
        {
            "address1": "大阪府",
            "address2": "大阪市北区",
            "address3": "芝田",
            "kana1": "オオサカフ",
            "kana2": "オオサカシキタク",
            "kana3": "シバタ",
            "prefcode": "27",
            "zipcode": "5300012"
        }
    ],
    "status": 200
}' (length=293)
-------------------------------
array (size=3)
  'message' => null
  'results' => 
    array (size=1)
      0 => 
        array (size=8)
          'address1' => string '大阪府' (length=9)
          'address2' => string '大阪市北区' (length=15)
          'address3' => string '芝田' (length=6)
          'kana1' => string 'オオサカフ' (length=15)
          'kana2' => string 'オオサカシキタク' (length=24)
          'kana3' => string 'シバタ' (length=12)
          'prefcode' => string '27' (length=2)
          'zipcode' => string '5300012' (length=7)
  'status' => int 200

ちなみに、

php7
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //文字列で返す

をセットした場合、curl_exec()のレスポンスは文字列なので、今回の場合json形式の文字列となります。郵便番号検索API-zipcloudを参考にしてください。

また、PHPでjson形式の文字列は扱いずらいので、下記のように配列に変換すると色々と便利かと思います。

php7
$resultarr = json_decode($result,true); //jsonを配列に

以上です。
phpのcurlオプションは数が多すぎるので、適時リファレンスを見て対応するのがいいかと思います。

引用
zipCloud 郵便番号検索API

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.