3

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

项目描述也应该能够包含 html 标签。

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

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

或者

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

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

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

提前感谢您的澄清。

4

1 回答 1

1

当您想在那里使用 HTML 代码时,只有一种选择,即 CDATA 部分。

原因:Feed 必须是有效的 XML,但 HTML 可能不是有效的 XML。因此,如果您在没有 CDATA 的情况下使用 HTML,则描述中的所有无效 XML 都将导致 XML-Parser-Error。这可能已经被这样一个简单的事情所强制,比如&nbsp;or <br>(什么是有效的 HTML,但无效的 XML)

CDATA 部分不会被解析,所以你可以在那里使用你想要的。

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

于 2012-10-10T23:34:30.383 回答