【问题标题】:Limit HTML Text to 500 characters将 HTML 文本限制为 500 个字符
【发布时间】: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。

标签: php html text limit


【解决方案1】:

最好的办法是不要删掉消息。那么如何限制消息呢? 答:通过 CSS 来限制。

echo '<div style="display:inline-block; overflow:hidden; width:500px; height:300px;">'.$message.'</div>';

现在你的消息没有被完全显示,只是其中的一部分,没有标签被剥离,所以没有这样的错误。

【讨论】:

  • 但是,如果您的 html 文本每篇文章 10.000 个字符,则需要限制。没有隐藏它。
  • 如果是这样的话,你需要剥离html的内部数据,而不是html标签。为此结帐simplehtmldom.sourceforge.net。如果任何纯文本(即 html 的内部内容)大于某个限制,您可以使用该包含轻松缩短(即删除它)。
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2021-01-16
  • 1970-01-01
相关资源
最近更新 更多