調用中間件接口的返回值是一個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一下