我用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 解析器错误。这可能已经被像
或<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 中的编码标记