勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでXML形式データをオブジェクト・JSON・連想配列に変換する方法

  PHP

先日バニラ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

https://www.php.net/manual/ja/function.json-decode

 - PHP

  関連記事

CentOSでPHPを5.5から5.3にバージョンダウンする方法

事情があってVPSに入れているPHPを5.5系から5.3系にバージョンダウンした ...

PHPでHTMLメールを送信する方法(PHPMailerあり無しの2パターン)

PHPでHTMLメールを送信したい。また、メール関連の機能を実装する際は環境によ ...

formのinput="file"でディレクトリを選択させ、ディレクトリ内のファイルを全てアップロードする方法

フォームで複数のファイルをアップロードしたい場合、input="file"を複数 ...

PHPにて指定した画像に対して、繰り返し透かし画像処理する方法

画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...

PHPのsetcookieで「Cannot modify」エラーの対応方法

PHPでsetcookieを使うと「Warning: Cannot modify ...