Dou*_*eux 4 php xml simplexml utf-8
所以我有一个PHP脚本解析来自Google Analytics的XML响应.它已经工作了几个星期,但今天我收到了这个警告,而简单的xml加载字符串并没有将xml响应转换为simplexml对象.
消息:simplexml_load_string():实体:第743行:解析器错误:实体'acirc'未定义
在我将响应传递给simplexml_load_string之前,我已经尝试过utf8_encoding响应,但它无法正常工作.我相信acirc是一个编码符号,并且这个符号以某种方式搞砸了解析器?
我得到两次上面的警告,然后我也得到两次:
消息:simplexml_load_string():实体:第743行:解析器错误:未定义实体'cent'
任何建议都将是一个巨大的帮助,谢谢!
感谢Marc的评论,我试过这个:
$xml = simplexml_load_string(htmlspecialchars_decode($response_body));
Run Code Online (Sandbox Code Playgroud)
我得到一个有趣的错误,但xml对象仍然是空的:
实体:第743行:解析器错误:输入不正确UTF-8,表示编码!字节:0x84 0x26 0x63 0x65
您要从中创建SimpleXMLElement的字符串不是有效的XML.简单的xml函数只能处理有效的XML.对于任何无效的东西,你会得到错误而不是元素.当您使用数据时,您已经看到了一些错误.
第一个错误只是XML具有未定义实体的信息.你发现的第二个错误特别有趣,原因我不明白是因为你真的把字符串放到了一些编码的必杀技中.因此,即使是字符串也不能正确编码,以便simplexml处理.
如果您获得的响应应该是有效的XML,那么请使用google提交bug报告,让他们修复损坏的输出,然后解决您的问题.
编辑:
您从浏览器复制并粘贴它?如果是这样html_entity_decode(),请在将其作为XML加载之前尝试运行它.可能你没有加载XML而是HTML.更好的使用DomDocument和loadHTML功能,而不需要解码任何东西.
| 归档时间: |
|
| 查看次数: |
3001 次 |
| 最近记录: |