如果您接受用户提交的包含HTML的内容,那么使用有效HTML生成自动摘录的最安全方法是什么


If you accept user submitted content containing HTML whats the safest way to generate auto excerpt with valid HTML?

如果您接受包含HTML的用户提交的内容,您将如何生成自动摘录(使用PHP(并保持HTML有效?

例如,如果您选择前 200 个字符,您可能会错过结束标签,并且计数标签不是很简单。

我看过一些图书馆,但它们很大,因为它们处理很多事情。我只需要它来生成自动摘录。

如果你想确保有效性,你将不得不计算标签,我猜。

限制strip_tags接受的标签将使检查变得不那么复杂。

首先,您应该检查指定位置 (200( 处的字符是否是标签的一部分。我认为,最简单的方法是检查标签打开器 (<( 是否出现在标签关闭器 (>( 之前出现在位置的左侧。

如果您在标签内,则必须确定它是否为结束标签。如果是这样,您应该将限制延长到下一次出现">"。否则,您将限制降低到标签打开器的最后一次出现。

现在,您唯一的问题是检查字符串末尾是否缺少结束标记。计算允许的标签(开始和关闭(会给你一个提示,你必须在最后添加哪些结束标签,以及其中有多少。

这给您留下了确定这些"更正"标签顺序的问题。只要有一点逻辑,你也应该能够做到这一点。

有一个不错的

斯特凡