我正在阅读有关创建适用于 iTunes的播客提要的文档,常见错误部分说:
使用 HTML 命名字符实体。
<! — illegal xml — >
<copyright>© 2005 John Doe</copyright>
<! — valid xml — >
<copyright>© 2005 John Doe</copyright>
与HTML不同,XML 仅支持五个“命名字符实体”:
character name xml
& ampersand &
< less-than sign <
> greater-than sign >
’ apostrophe '
" quotation "
以上五个字符是 XML 中唯一需要转义的字符。所有其他字符都可以直接在支持 UTF-8 的编辑器中输入。您还可以使用为字符指定 Unicode 的数字字符引用,例如:
character name xml
© copyright sign ©
℗ sound recording copyright ℗
™ trade mark sign ™
如需进一步参考,请参阅XML Character 和 EntityReferences。
现在我htmlentities()
在 PHP5 下使用,并且提要正在验证和工作。但是从我收集到的一些可以放入内容的东西可能会成为使其不再有效的实体。确保我不会传递不良数据的最佳功能是什么?我很偏执,有些东西会被输入并被实体化并破坏提要——我应该只使用str_replace()
命名实体并替换为命名实体,而不要管其余部分吗?或者我可以htmlspecialchars()
以某种方式使用吗?
简而言之,什么是替代品htmentities()
,可以确保播客 RSS 提要中的描述、标题等输入是安全的?