【发布时间】:2011-03-09 17:22:57
【问题描述】:
是否有任何函数可以用来解析任何字符串以确保它不会导致 xml 解析问题?我有一个 php 脚本输出一个 xml 文件,其中包含从表单中获取的内容。
问题是,除了来自 php 表单的常见字符串检查外,一些用户文本会导致 xml 解析错误。我特别面对这个“’”。这是我收到的错误Entity 'rsquo' not defined
有没有人在为 xml 输出编码文本方面有经验?
谢谢!
一些澄清: 我正在从 xml 文件中的表单输出内容,随后由 javascript 解析。
我处理所有表单输入:htmlentities(trim($_POST['content']), ENT_QUOTES, 'UTF-8');
当我想将此内容输出到 xml 文件中时,我应该如何对其进行编码以使其不会引发 xml 解析错误?
到目前为止,以下 2 个解决方案有效:
1)echo '<content><![CDATA['.$content.']]></content>';
2)echo '<content>'.htmlspecialchars(html_entity_decode($content, ENT_QUOTES, 'UTF-8'),ENT_QUOTES, 'UTF-8').'</content>'."\n";
以上两种解决方案安全吗?哪个更好?
谢谢,很抱歉没有早点提供此信息。
【问题讨论】:
-
我会使用 XML 解析器来查看 XML 解析器是否不会阻塞输入。
-
这里的问题是 XML 只知道很少的实体可以实际指定字符引用。 (见w3.org/TR/xml/#sec-predefined-ent)
标签: php xml xml-parsing