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

问题描述:

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

我碰到是当一个HTML标签,例如内达到300个字符的限制问题:(看这里)

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

发生这种情况时,整个页面可能成为不良格式化,因为一切在上例中的HERE被删除并且HTML标记保持打开状态后。

我想使用CSS来隐藏任何超出特定限制的溢出,并在文本超出特定数字时创建“Read More”链接,但这会让我包括页面上的所有文本。

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

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

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

从HTML中提取明文,并显示该明文。有一些库(比如用于.NET的HTML Agility Pack)使得这很容易,用XML解析器自己完成并不难。试图修复截断的HTML片段是一个失败的原因。

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

虽然有这个问题。有一点是,如果有300个字符只是HTML,那么您的摘要将显示为空白。

如果您不需要显示html,则只需简单地提取纯文本并使用它即可。

编辑:添加使用像孤儿标签整齐html的东西。原始答案只解决中间标签的切割问题,而不是在开启/关闭标签内。