Laravel string limit with html 标签显示的项目少于实际项目数

Laravel string limit with html tag shows less item than the actual number of items

我正在使用 laravel 和 blade 来遍历一些博客项目。我想显示带有 html 标签和 str_limit 功能的博客。

当我尝试时

{!!str_limit($blog->body, 450)!!}

它只显示 10 个博客或 22 个中的 11 个。它应该显示所有项目。

如果我使用 {{ str_limit($blog->body, 450) }} 它显示所有但没有 html 标签我的意思是 html 标签没有效果。

str_limit 不知道 HTML 标签,因此在包含 HTML 的字符串上使用它通常会导致未关闭的标签破坏页面的其余部分。

例如,一段以 <a href="http://google.co 结尾的摘录,因为它在那里被剪掉了,这意味着您页面的其余部分是 <a> 标记的一部分,直到您不小心输出了 " 又是 >

有几个选项可供您选择:

  • 删除 HTML 标签。我知道您想保留它们,但这仍然是生成摘录的最简单方法。
  • 输出整个 body,但给它最大高度和一个 overflow: hidden 来隐藏其余部分。这有带宽缺点,因此如果您的帖子非常长,它可能不是最好的方法。
  • 制作您自己的摘录作为一个单独的字段。手动工作,但您始终可以控制。
  • Find/code 一个 HTML-aware 摘录生成器。我不知道我可以推荐一个好的 - 这是一个复杂的问题。您可以尝试生成一个 str_limited 字符串,然后 运行 通过 Tidy 结果,这可以 某种 修复无效 HTML。