utf8_decode 与符号 (&) 错误
我一直在构建一个返回 XML 代码的 API。例如,API 将返回:
<message>hello, this is a message & it used htmlsepcialchars</message>
我正在使用 file_get_contents() 和 simplexml_load_string() 将返回的信息加载到数组中。
然后,我使用 utf8_decode() 将消息转换为接收网站上友好的字符集。但是,我收到以下消息,该消息指向消息中的“&”:
Warning: main() [function.main]: unterminated entity reference
由于“&”,消息的其余部分被截断。有什么想法可以解决这个问题吗?
I have been building an API which returns XML code. For example, the API will return:
<message>hello, this is a message & it used htmlsepcialchars</message>
I am using file_get_contents() and simplexml_load_string() to load the returned information into an array.
I then used utf8_decode() to convert the message into a friendly charset on the receiving website. However, I receive the following message which pin points to the ampersand (&) in the message:
Warning: main() [function.main]: unterminated entity reference
Due to the ampersand, the rest of the message is truncated. Any ideas how to get around this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看来您的 & 符号未编码,因此要么对其进行双重解码,要么将其放入 CDATA 字段中。
通常类似的特殊字符应该放在 CDATA 字段中。它省去了编码的麻烦。
php DOM 创建函数有你所需要的。
当然:
http://www.w3schools.com/Xml/xml_cdata.asp
和
http://fr.php.net/manual/en /function.domdocument-create-cdata-section.php
it seems your ampersand is not encoded so either double decode it or put it in CDATA field.
Usually special characters like that should be put in CDATA fields. it saves the trouble of having to encode.
php DOM creation functions have what you need.
and of course :
http://www.w3schools.com/Xml/xml_cdata.asp
and
http://fr.php.net/manual/en/function.domdocument-create-cdata-section.php
那么,simpleXML 字符串必须采用 utf8 编码,并且值实体应该进行转义。
您的代码中真的有必要使用
utf_decode()
吗?Well, simpleXML strings must be utf8 encoded, and values entities should be escaped.
Is
utf_decode()
really necessary in your code ?找到我的答案,用户错误。我基本上是在代码中的某个地方再次逃脱。
Found my answer, user error. I was basically escaping again somewhere in my code.