【问题标题】:Which is better for encoding HTML for RSS?哪个更适合为 RSS 编码 HTML?
【发布时间】:2010-09-19 11:01:19
【问题描述】:

我最近在我发布的一些 RSS 提要中引入了 HTML(到目前为止只有纯文本,没有标记),我想知道哪种方法更好:使用字符编码(例如 htmlspecialchars)或将所有内容封装在CDATA?

在我看来,CDATA 可能更容易,但我不清楚是否有任何理由(微妙或其他)选择一种方法而不是另一种方法。 (对于初学者来说,CDATA 方法在查看源代码时会更容易阅读……)

【问题讨论】:

    标签: php rss cdata


    【解决方案1】:

    CDATA 用于不应由 XML 解析器解析的任何数据。任何不在 CDATA 块中的标签由 XML 解析器解析,并可能具有不同的含义。

    如果不需要的话,CDATA 也会给解析器带来开销。在您知道不会使用 HTML(或其他方式)时尽量避免使用 CDATA 块,否则使用它。

    也就是说,我确实同意 jamesh 的观点,因为您应该始终更喜欢 Atom 而不是 RSS。我制作了一个提要阅读器,在抓取提要时,总是更喜欢 Atom 而不是 RSS。

    【讨论】:

    • 啊!猜猜我是时候停止推迟阅读 Atom 了。
    【解决方案2】:

    就个人而言,CDATA 更​​容易,因为它允许订阅者显示实际的 HTML,而不需要他们的读者做任何有趣的事情。

    如果您使用 HTML 编码,订阅者阅读器或网站本身必须解码源代码以显示 HTML

    【讨论】:

    • 我可以看到它会更容易......但我很好奇是否还有其他已知的优点/缺点。
    • 我认为您的消费者可以通过 CDATA 方法将 HTML 直接显示到页面是优点/缺点,这取决于目的,既是优点也是缺点
    • 好点。当对 html 字符进行编码时,我与各种阅读器的结果不同——有些会呈现 HTML,有些会显示标记。
    【解决方案3】:

    冒着给出您可能不想听到的答案的风险:使用Atom而不是 RSS。

    Atom 是很好的命名空间 XML,因此您可以直接混合和匹配 XHTML,而不必担心您询问的编码问题。

    几乎所有 RSS 都支持它,而且因为它只是普通的 Atom,如果你真的不想使用库来操作它,它会更容易滚动。

    Atom 也是 IETF 标准,而 RSS 不是。

    【讨论】:

      【解决方案4】:

      htmlentities() 就像一个魅力。无需使用 CDATA。 http://php.net/manual/en/function.htmlentities.php

      【讨论】:

        猜你喜欢
        • 2011-08-18
        • 1970-01-01
        • 2012-09-02
        • 2012-03-26
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多