Lyo*_*yon 5 php xml xml-parsing
是否有任何函数可用于解析任何字符串以确保它不会导致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";
上述2种解决方案是否安全?哪个更好?
谢谢,抱歉没有提前提供此信息.
你采取了错误的方式 - 不要寻找一个不会给你错误的解析器.而是尝试使用格式良好的xml.
你是怎么’从用户那里得到的?如果他确实键入了它,你就没有正确处理输入 - 例如你应该逃避和去&.如果您将实体放在那里(可能代替某些撇号),可以在DTD(<!ENTITY rsquo "&x2019;">)中定义它,或者使用数字符号(’)来编写它,因为几乎每个命名实体都是HTML的一部分.Gumbo指出,XML只定义了几个基本的.
编辑基于问题的补充:
]]> <°)))><您遇到问题.&应该被解释为&的值).如果你使用带有ENT_QUOTES的htmlspecialchars(),它应该没问题,但看看Drupal是如何做到的.