缩短HTML文本和格式错误的标签

时间:2009-12-31 19:47:08

标签: html

在我的网络应用程序中,如果长度超过300个字符,我打算缩短一长串HTML格式文本,然后在页面上显示300个字符和Read More链接。

我遇到的问题是在HTML标记内达到300个字符的限制时,例如:(查找此处)

 <a hreHERE="somewhere">link</a>
 <a hre="somewhere">liHEREnk</a>

发生这种情况时,整个页面可能会格式不正确,因为上一个示例中的HERE之后的所有内容都被删除,并且HTML标记保持打开状态。

我考虑使用CSS隐藏超出特定限制的任何溢出,并在文本超出某个数字时创建“阅读更多”链接,但这需要我包括页面上的所有文本。

我还想过在.分割文本以确保它在句子末尾分割,但这意味着我会包含比我需要的更多的字符。

有没有更好的方法来实现这一目标?

注意:我没有指定服务器端语言,因为这是一般性问题,但我使用的是ASP.NET / C#。

2 个答案:

答案 0 :(得分:4)

从HTML中提取明文,然后显示。有一些库(比如.NET的HTML Agility Pack)可以轻松实现这一点,并且使用XML解析器自己完成它并不困难。尝试修复截断的HTML片段是一个失败的原因。

答案 1 :(得分:1)

我能想到的一个选择是将它剪掉300个字符并确保'&lt;'的最后一个索引小于'&gt;'的最后一个索引。如果是,请在最后一个'&gt;'实例之前截断字符串,然后使用像tidy html这样的库来修复孤立的标记(例如示例中的&lt; / a&gt;)。

但是这有问题。有一件事是,如果除了HTML之外还有300个字符,你的摘要将显示为空。

如果你不需要显示html,那么简单地提取纯文本并使用它更容易。

编辑:使用像tidy html这样的孤立标签。原始答案仅解决了切割事件中间标签,而不是在打开/关闭标签内。