我一直在构建一个返回XML代码的API。例如,API将返回:
<message>hello, this is a message & it used htmlsepcialchars</message>
我正在使用file_get_contents()和simplexml_load_string()将返回的信息加载到数组中。
然后我使用utf8_decode()将消息转换为接收网站上的友好字符集。但是,我收到以下消息,其中的引脚指向消息中的&符号(&amp;):
Warning: main() [function.main]: unterminated entity reference
由于&符号,邮件的其余部分被截断。任何想法如何解决这个问题?
答案 0 :(得分:0)
似乎你的&符号没有被编码所以要么对它进行双重解码,要么将它放在CDATA字段中。
通常这样的特殊字符应放在CDATA字段中。它省去了编码的麻烦。 php DOM创建函数具有您所需的功能。
$doc->createCDATASection
当然:
http://www.w3schools.com/Xml/xml_cdata.asp
和 http://fr.php.net/manual/en/function.domdocument-create-cdata-section.php
答案 1 :(得分:0)
嗯,simpleXML字符串必须是utf8编码的,并且值实体应该被转义。
您的代码中是否真的需要utf_decode()
?
答案 2 :(得分:0)
找到我的答案,用户错误。我基本上在我的代码中的某个地方再次逃避。