Laravel博客内容预览如何移除 、‏等HTML实体字符
解决Laravel中博客预览残留HTML实体的问题
你遇到的问题是strip_tags仅移除HTML标签,但不会处理 、‏这类HTML实体字符,所以需要先把这些实体解码成普通字符,再进行截断处理。
直接修改现有代码
把html_entity_decode加入到处理流程中,它会将HTML实体转换为对应的普通字符:
{{ Str::limit(strip_tags(html_entity_decode($post->content)), 100, ' ...') }}
如果需要更全面的解码(比如同时处理单/双引号实体),可以指定编码和解码标志:
{{ Str::limit(strip_tags(html_entity_decode($post->content, ENT_QUOTES, 'UTF-8')), 100, ' ...') }}
ENT_QUOTES:同时解码单引号(')和双引号(")的实体UTF-8:确保和你的项目编码一致,避免乱码
封装成辅助函数(复用更方便)
如果多个地方需要用到这个预览逻辑,可以自定义一个辅助函数:
- 在项目根目录创建
app/helpers.php文件,添加以下代码:
<?php use Illuminate\Support\Str; function post_preview(string $content, int $limit = 100): string { // 解码HTML实体 $decodedContent = html_entity_decode($content, ENT_QUOTES, 'UTF-8'); // 移除HTML标签 $strippedContent = strip_tags($decodedContent); // 截断并添加省略号 return Str::limit($strippedContent, $limit, ' ...'); }
- 在
composer.json的autoload部分添加这个文件的自动加载:
"autoload": { "files": [ "app/helpers.php" ], // 其他自动加载配置... }
- 执行
composer dump-autoload让配置生效
之后在Blade模板里就可以直接调用:
{{ post_preview($post->content) }}
内容的提问来源于stack exchange,提问作者only judge can god me
相关产品推荐
相关产品推荐

