【问题标题】:Forcing ending tags in HTML segments or ignoring missing ending tags在 HTML 段中强制结束标签或忽略缺少的结束标签
【发布时间】:2009-08-22 13:08:36
【问题描述】:

在创建显示较大 html 文档的子集(前 x 个字符)的 rss 提要时,我遇到了一个问题,即某些标签以“前 x 个字符”开始,但结束标签超出该范围。如果提要的使用者试图在提要中呈现 html,这可能会导致一些有趣的问题,因为这可能会导致显示提要的页面出现意外的呈现问题。

我假设这是 rss 提要作者和读者很久以前就解决的一个常见问题,但我似乎无法弄清楚如何实现它,除非尝试解析提要中的 html 并添加缺失的结束标签,这可能变得凌乱。任何建议将不胜感激。提前致谢。

克里斯

【问题讨论】:

    标签: html rss rendering


    【解决方案1】:

    如果你使用 php,一个很好的解决方案是HTMLPurifier。它将清理它并使其完全安全地重新传输。

    【讨论】:

    • 感谢您的建议,不幸的是,这是针对 .NET 项目的,因此从技术角度来看,这不适合,但我会记住 PHP 中的其他项目。
    【解决方案2】:

    不确定这是否适用于您的项目,但我在 FeedDemon 中使用 HTML Tidy

    【讨论】:

    • 谢谢。这听起来很有希望。我会在进一步调查后回复。
    【解决方案3】:

    较大的文档从何而来?如果存在生成 HTML 的源文本,那么将其截断并从截断的版本重新生成 HTML 比处理部分 HTML 的问题要容易得多。要完全正确地执行此操作,您基本上需要重新解析和序列化 HTML。

    无论如何,RSS 中的 HTML 仍然很麻烦。您最好去掉所有标签并在剩下的内容上进行简单的文本截断。

    【讨论】:

    • 较大的文档来自用户从 YUI 富文本编辑器输入的文本。此文本中通常会包含 HTML 格式。
    • 这很不幸。正确处理一般的 HTML 非常非常棘手,尤其是关心安全性。您可能必须获得一个成熟的 HTML 解析器,将输入转换为 DOM 或类似的对象树,然后在重新序列化之前修剪掉位。
    • (这基本上是 Tidy 或 Purifier 内部要做的事情。)
    猜你喜欢
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2014-04-22
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多