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

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:确保和你的项目编码一致,避免乱码

封装成辅助函数(复用更方便)

如果多个地方需要用到这个预览逻辑,可以自定义一个辅助函数:

  1. 在项目根目录创建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, ' ...');
}
  1. 在composer.json的autoload部分添加这个文件的自动加载:
"autoload": {
    "files": [
        "app/helpers.php"
    ],
    // 其他自动加载配置...
}
  1. 执行composer dump-autoload让配置生效

之后在Blade模板里就可以直接调用:

{{ post_preview($post->content) }}

内容的提问来源于stack exchange,提问作者only judge can god me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:45:27