htmlspecialchars是否足以在HTTP响应中转义XML元素内容?

时间:2009-06-18 07:26:04

标签: php xml http utf-8

我正在返回UTF-8 XML响应,并且一些元素具有用户提供的内容,因此我必须确保它们被正确转义。是否使用htmlspecialchars(..., ENT_COMPAT, 'UTF-8')足以正确转义XML元素文本?

2 个答案:

答案 0 :(得分:1)

我不确定我完全理解...... 你想要xml里面的xml或html里面的xml? 如果是后者,为什么不使用CDATA?

e.g。

<xmlelement>
  <![CDATA[<span>John Smith</span>]]>
</xmlelement>

答案 1 :(得分:0)

http://www.w3.org/TR/2008/REC-xml-20081126/

2.2字符 ...

[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

因此,这告诉您无法在低区域中存储字符&lt; 0x20没有Tab,CR,LF。另外,xml解析器必须规范换行。它必须将CR LF转换为LF等等。

因此,普通节点和CDATA部分都不允许在XML中传输二进制字符串。如果你想运输它,你必须将它转换为base64或运输是数字列表。