PHPでXML形式データをオブジェクト・JSON・連想配列に変換する方法
先日バニラJavaScriptでXML形式データの取り扱いとJSON形式への変換方法をメモしたが、同じようなことをPHPでも行いたい。具体的には何らかのAPIからXML形式のデータを取得し、オブジェクト・JSON・連想配列に変換させたい。以下に対応方法をメモ。
使用するAPI
以下の郵便番号による住所検索APIを使用する。
https://geoapi.heartrails.com/api.html#postal
対応方法
ソースコード
<?php $url = 'https://geoapi.heartrails.com/api/xml?method=searchByPostal&postal=1050003'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if( !curl_errno($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200' ){ //オブジェクトに変換 $obj = simplexml_load_string($response); var_dump($obj); //JSONに変換 $json = json_encode($obj); var_dump($json); //連想配列に変換 $array = json_decode($json, true); var_dump($array); }else{ echo 'error'; } curl_close($ch);
出力結果
//オブジェクト object(SimpleXMLElement)#2 (1) { ["location"]=> object(SimpleXMLElement)#3 (8) { ["city"]=> string(6) "港区" ["city-kana"]=> string(12) "みなとく" ["town"]=> string(9) "西新橋" ["town-kana"]=> string(18) "にししんばし" ["x"]=> string(9) "139.75198" ["y"]=> string(9) "35.666286" ["prefecture"]=> string(9) "東京都" ["postal"]=> string(7) "1050003" } } //JSON string(239) "{"location":{"city":"\u6e2f\u533a","city-kana":"\u307f\u306a\u3068\u304f","town":"\u897f\u65b0\u6a4b","town-kana":"\u306b\u3057\u3057\u3093\u3070\u3057","x":"139.75198","y":"35.666286","prefecture":"\u6771\u4eac\u90fd","postal":"1050003"}}" //連想配列 array(1) { ["location"]=> array(8) { ["city"]=> string(6) "港区" ["city-kana"]=> string(12) "みなとく" ["town"]=> string(9) "西新橋" ["town-kana"]=> string(18) "にししんばし" ["x"]=> string(9) "139.75198" ["y"]=> string(9) "35.666286" ["prefecture"]=> string(9) "東京都" ["postal"]=> string(7) "1050003" } }
リファレンス
simplexml_load_string
https://www.php.net/manual/ja/function.simplexml-load-string.php
json_encode
https://www.php.net/manual/ja/function.json-encode
json_decode
関連記事
-
-
PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法
PHPにて漢数字と普通の数字の相互変換を行いたい。例えば「123465789」⇔ ...
-
-
PHPにて西暦から干支(十二支)を計算し表示する方法
先日MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表 ...
-
-
Cookieをできるだけ長い期間保存する方法
あるシステムの中でCookieを可能な限り長い期間保存したいというリクエストを受 ...
-
-
PHPでサイトマップを動的に生成する方法
WordPress等のCMSは使っておらず、自動更新するサイトがあり、そのサイト ...
-
-
Codeigniter4でエラーログ設定、出力及び確認方法
Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...