PHP轉換gb2312編碼xml爲數組

調用中間件接口的返回值是一個xml字符串,其中charset=“GB2312”,但奇怪的是 我使用 mb_detect_encoding() 函數來判斷這個xml字符串,得到的結果卻是 UTF-8。但由於xml中charset的值爲GB2312,所以導致了 simplexml_load_string()  函數無法成功解析這個xml字符串。

其實解決這個錯誤非常簡單,使用str_replace函數將xml字符串中的編碼格式替換爲 UTF-8 後再使用json編碼解碼後就可以得到乾淨的數組元素。

$xml= str_replace('GB2312','UTF-8',$xml);

$xml= simplexml_load_string($xml);

$xml= json_encode($xml);//將對象轉換個JSON

$xml=json_decode($xml,JSON_UNESCAPED_UNICODE);//將json轉換成數組

 


記錄情況

業務需求:中間件開放了一個接口的url和接口函數的相關說明,需要通過調用接口獲取和修改服務器中的數據。以此來打到各個平臺數據通用的目的。但由於 simplexml_load_string() 函數一直無法正常解析xml字符串,所以導致後面的工作都做不下去。

中間件服務器是如何開發的,框架嗎?mark一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章