?本文介紹如何使用php函數解析xml數據為數組。
<?php$a = '<xml><ToUserName><![CDATA[ww8b77afac71336111]]></ToUserName><FromUserName><![CDATA[sys]]></FromUserName><CreateTime>1736328669</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[change_external_contact]]></Event><ChangeType><![CDATA[del_external_contact]]></ChangeType><UserID><![CDATA[Xu]]></UserID><ExternalUserID><![CDATA[woh0dIDAAA4kq6S_aXw1UkX7_qXb22ng]]></ExternalUserID></xml>';$xmlObject = simplexml_load_string($a,'SimpleXMLElement', LIBXML_NOBLANKS);
$json = json_encode($xmlObject);
var_dump($json);
$array = json_decode($json, true);
print_r($array);
打印后發現xml內容中帶有CDATA的好像不能正常解析?
string(133) "{"ToUserName":{},"FromUserName":{},"CreateTime":"1736328669","MsgType":{},"Event":{},"ChangeType":{},"UserID":{},"ExternalUserID":{}}"
Array
(
? ? [ToUserName] => Array
? ? ? ? (
? ? ? ? )? ? [FromUserName] => Array
? ? ? ? (
? ? ? ? )? ? [CreateTime] => 1736328669
? ? [MsgType] => Array
? ? ? ? (
? ? ? ? )? ? [Event] => Array
? ? ? ? (
? ? ? ? )? ? [ChangeType] => Array
? ? ? ? (
? ? ? ? )? ? [UserID] => Array
? ? ? ? (
? ? ? ? )? ? [ExternalUserID] => Array
? ? ? ? (
? ? ? ? ))
?
期初我以為是這個函數有問題,隨后我查閱了官方文檔,https://www.php.net/manual/zh/libxml.constants.php?
?
看起來不錯,我來替換下嘗試一下
string(239) "{"ToUserName":"ww8b77afac713361bd","FromUserName":"sys","CreateTime":"1736328669","MsgType":"event","Event":"change_external_contact","ChangeType":"del_external_contact","UserID":"XuBin","ExternalUserID":"woh0dIDAAA4kq6S_aXw1UkX7_qXb22ng"}"
Array
(
? ? [ToUserName] => ww8b77afac71336111
? ? [FromUserName] => sys
? ? [CreateTime] => 1736328669
? ? [MsgType] => event
? ? [Event] => change_external_contact
? ? [ChangeType] => del_external_contact
? ? [UserID] => Xu
? ? [ExternalUserID] => woh0dIDAAA4kq6S_aXw1UkX7_qXb22ng
)
?
完美?