2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-04-12

環境:
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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?