You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中移除文章HTML标签并仅截取纯文本?

解决Laravel中忽略HTML标签截取纯文本的问题

嘿,这个问题我做CMS的时候也碰到过!你现在的核心问题是执行顺序搞反了——先调用str_limit再移除标签,导致HTML标签本身的字符被算进了截取长度里,最后纯文本就被过度截断了。调整一下顺序就能解决,给你几个实用的方案:

方案一:用原生辅助函数快速解决

直接把strip_tags放在str_limit前面,先把所有HTML标签清掉得到纯文本,再截取长度:

{!! str_limit(strip_tags($post->content), 230) !!}

这样str_limit统计的就是纯文本的字符数,再也不会把<p>、<strong>这些标签的字符算进去啦。

方案二:用Laravel的Str门面更优雅(推荐)

Laravel的Str类提供了链式调用的方式,代码可读性更好,适合Laravel 5.8及以上版本:

{!! \Illuminate\Support\Str::limit(\Illuminate\Support\Str::of($post->content)->stripTags(), 230) !!}

如果你的模板里已经引入了use Illuminate\Support\Str;,还能简化成:

{!! Str::limit(Str::of($post->content)->stripTags(), 230) !!}

逻辑很清晰:先把文章内容转成字符串对象,移除所有HTML标签,最后截取前230个纯文本字符。

额外优化:处理多余空格

如果移除标签后有一堆连续的空格或换行,可以再加一步优化,让文本更整洁:

{!! Str::limit(Str::of($post->content)->stripTags()->trim()->replaceMatches('/\s+/', ' '), 230) !!}

这个版本会把多个连续的空格、换行替换成单个空格,截取后的文本看起来更舒服。


内容的提问来源于stack exchange,提问作者Sa Roz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:14:09