【发布时间】:2014-05-11 08:29:29
【问题描述】:
我有以下代码将 html 文本限制为 500 个字符:
if (strlen($text)>500) {
$message = substr($text, 0, 500);
echo $message;
}
else {
echo $text;
}
问题是有时候代码会在标签中间切掉,所以输出是:
...............................................Some text <a hre
我该如何解决这个问题?
【问题讨论】:
-
你真的希望用户输入html标签吗?
-
问题是,在这种情况下预期的输出是什么。您可以剥离所有标签。您可以剪掉最后一个标签并使用某种 HTML Tidy。
-
问题是:为什么要将这样的输入限制为 500?如果您希望您的用户编写体面的 HTML,他们也应该足够聪明,知道他们输入的内容的正确长度。如果是关于存储,您可以使数据库中的文本字段几乎不受限制,而且开销很小(除非用户实际上在其中存储了千兆位的文本)。
-
但是如果你需要有这个限制,解决这个问题的正确方法是根本不允许长文本而不是截断它。因此,在发布时,只需再次提交相同的表格,但文本太长,以便他们修复。然后,为了进一步帮助他们,您可以将
maxlength属性应用于文本区域。在那之后,通过添加一个显示剩余字符的小脚本来帮助他们更多,就像这个评论框下面一样。如果该脚本很聪明,它也会删除该属性,因此用户可以粘贴较长的文本,并在文本区域进行编辑。 -
在那种情况下,我根本不会显示 HTML。只需在内容上调用
strip_tags,然后将长度限制为 500。