我读的文档创建播客饲料suitable for iTunes,并Common Mistakes节说:PHP函数将任意的“描述”成有效的XML数据,播客饲料
使用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 and EntityReferences。
现在,我使用PHP5 htmlentities()
下和饲料和验证工作。但是从我收集的内容来看,一些可能会被放入内容的东西可能会变成不再有效的实体。用什么最好的功能来保证我不会传递错误的数据?我是偏执狂的东西会得到进入,并获得实体化,并打破饲料 - 我应该只使用str_replace()
并取而代之的命名实体,让剩下的独立?或者我可以以某种方式使用htmlspecialchars()
?
简而言之,什么是htmentities()
的插入式替代品,可以确保输入在播客RSS Feed中的描述,标题等是安全的?
他们的规格具体说了“CDATA节极力劝阻。”所以就这样了。如果我使用'mb_encode_numericentity' http://us3.php.net/mb_encode_numericentity,我传入第二个和第三个参数:'array $ convmap,string $ encoding'?我猜''编码'将是'UTF-8' – artlung 2010-07-02 04:01:34
我已经编辑了解决您的问题的答案:p – Artefacto 2010-07-02 04:14:34
因此,看起来我会继续运行'htmlentities()',然后再运行' mb_convert_encoding()'和'htmlspecialchars()'然后呢?这两个调用基本上是“xml-ize”编码匹配的,是真的吗? – artlung 2010-07-02 05:12:20