RSS feed: htmlspecialchars() vs. CDATA



我用PHP写了一个小类来生成一个简单的RSS提要。

项目描述还应能够包含 html 标记。

我想知道哪一种是更好的方法,每种方法的优点/缺点是什么:

$item .= "<description><![CDATA[" . $description . "]]></description>n";

$item .= "<description>" . htmlspecialchars($description, ENT_NOQUOTES, "UTF-8") . "</description>n";

我能想到的 CDATA 方法的唯一缺点是,我必须提前检查字符串$description是否包含

"<![CDATA[" or "]]>".

提前感谢您的澄清。

当你想在那里使用HTML代码时,只有1个选择,即CDATA部分。

原因是:源必须是有效的 XML,但 HTML 可能不是有效的 XML。因此,如果您使用不带 CDATA 的 HTML,则描述中所有无效 XML 的内容都将导致 XML 解析器错误。这可能已经被像&nbsp;<br> 这样简单的东西所强迫(什么是有效的HTML,但无效的XML)

CDATA 部分不会被解析,因此您可以在那里使用所需的内容。

但是,您最好使用<content:encoded>进行标记。

  • https://developer.mozilla.org/en-US/docs/RSS/Article/Why_RSS_Content_Module_is_Popular_-_Including_HTML_Contents

  • 描述和内容之间的区别:RSS2 中的编码标记

最新更新