htmlentities()这不是
构建合法XML的保证方法。
如果您只担心这,请使用
htmlspecialchars()代替
htmlentities()。如果您的数据表示形式与XML文档的编码形式之间存在编码不匹配的情况,则
htmlentities()可以解决/覆盖它们(这样做会使XML大小变大)。我相信最好保持一致并只使用
htmlspecialchars()。
另外,请注意,如果将
htmlspecialchars()内部用单引号引起来的XML属性的返回值作为泵浦,则还需要传递该
ENT_QUOTES标志,以便对源字符串中的任何单引号也进行正确编码。我建议无论如何都要这样做,因为这会使您的代码不受将来有人对XML属性使用单引号引起的错误的影响。
编辑: 澄清:
htmlentities()会将许多非ANSI字符(我想这就是UTF-8数据的意思)转换为实体(仅用ANSI字符表示)。但是,它不能对没有相应实体的任何字符执行此操作,因此不能保证其返回值仅由ANSI字符组成。这就是为什么我建议不要使用它。
如果可能存在编码问题,请明确处理(例如,使用
iconv())。
编辑2 :考虑到乔什·戴维斯(Josh Davis)以下的评论,改进了答案。



