在我的网络应用程序中,如果长度超过300个字符,我打算缩短一长串HTML格式文本,然后在页面上显示300个字符和Read More
链接。
我遇到的问题是在HTML标记内达到300个字符的限制时,例如:(查找此处)
<a hreHERE="somewhere">link</a>
<a hre="somewhere">liHEREnk</a>
发生这种情况时,整个页面可能会格式不正确,因为上一个示例中的HERE
之后的所有内容都被删除,并且HTML标记保持打开状态。
我考虑使用CSS隐藏超出特定限制的任何溢出,并在文本超出某个数字时创建“阅读更多”链接,但这需要我包括页面上的所有文本。
我还想过在.
分割文本以确保它在句子末尾分割,但这意味着我会包含比我需要的更多的字符。
有没有更好的方法来实现这一目标?
注意:我没有指定服务器端语言,因为这是一般性问题,但我使用的是ASP.NET / C#。
答案 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这样的孤立标签。原始答案仅解决了切割事件中间标签,而不是在打开/关闭标签内。