PHP xml 解析错误
错误内容:
- simplexml_load_string(): input conversion failed due to input error
错误示例:
- xml 文件编码为utf-8, 但 encoding中的编码为 GB2312 (我自己就干了这样的蠢事)
需要注意的点:
- php simplexml_load_string() 解析过程中会有二个字符编码,需要保持一致
- xml 文件本身的字符编码
- xml encoding中的编码
code:
- 有时编码一致之后,还会出现这种解析错误, 需要自己转码
$responseXml = file_get_contents("文件路径");
// 替换空格
$replStr = str_replace(' ', '', "encoding=\"GB2312\"");
$responseXml = str_replace($replStr, "encoding=\"UTF-8\"", $responseXml);
// iconv 函数会有部分编码转换错误,mb_convert_encoding函数就没有
$responseXml = mb_convert_encoding($responseXml, 'UTF-8', 'GB2312, GBK');
$simple = simplexml_load_string($responseXml);