微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体’acirc’未在simplexml_load_string中定义

所以我有一个PHP脚本解析来自Google Analytics的XML响应.它已经工作了几个星期,但今天我收到了这个警告,而简单的xml加载字符串并没有将xml响应转换为simplexml对象.

Message: simplexml_load_string():
Entity: line 743: parser error :
Entity ‘acirc’ not defined

在我将响应传递给simplexml_load_string之前,我已经尝试过utf8_encoding响应,但它无法正常工作.我相信acirc是一个编码符号,并且这个符号以某种方式搞砸了解析器?

我得到两次上面的警告,然后我也得到两次:

Message: simplexml_load_string():
Entity: line 743: parser error :
Entity ‘cent’ not defined

任何建议都将是一个巨大的帮助,谢谢!

感谢marc评论,我试过这个:

$xml = simplexml_load_string(htmlspecialchars_decode($response_body));

我得到一个有趣的错误,但xml对象仍然是空的:

Entity: line 743: parser error : Input
is not proper UTF-8, indicate encoding
! Bytes: 0x84 0x26 0x63 0x65

解决方法:

您要从中创建SimpleXMLElement的字符串不是有效的XML.简单的xml函数只能处理有效的XML.对于任何无效的东西,你会得到错误而不是元素.当您使用数据时,您已经看到了一些错误.

一个错误只是XML具有未定义实体的信息.你发现的第二个错误特别有趣,原因我不明白是因为你真的把字符串放到了一些编码的必杀技中.因此,即使是字符串也不能正确编码,以便simplexml处理.

如果您获得的响应应该是有效的XML,那么请使用google报告错误报告,让他们修复损坏的输出,然后您的问题应该得到解决.

编辑:

您从浏览器复制并粘贴它?如果是这样,请在将其加载为XML之前尝试在其上运行html_entity_decode().可能你没有加载XML而是HTML.最好使用DomDocument和loadHTML函数,不需要解码任何东西.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。