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

Laravel Datatables助手转义HTML标签问题求助

解决Laravel Datatables取出HTML被转义的问题

方案一:在Datatables配置中指定原始列

这是最直接的解决方式,直接告诉Datatables哪些列包含原始HTML,不需要做转义处理:

return DataTables::of($yourDataQuery)
    // 定义需要展示HTML的列
    ->addColumn('content', function ($record) {
        // 直接返回数据库中存储的原始HTML内容
        return $record->html_content_column;
    })
    // 指定该列为原始HTML,跳过转义
    ->rawColumns(['content'])
    ->make(true);

如果你的列是模型的默认字段,不是通过addColumn新增的,也可以直接在rawColumns里指定字段名:

return DataTables::of(YourModel::query())
    ->rawColumns(['html_content_column'])
    ->make(true);

方案二:排除指定列的转义

如果大部分列需要转义,只有少数列是HTML内容,可以用escapeColumns方法指定需要转义的列,剩下的列会自动保留原始内容:

return DataTables::of(YourModel::query())
    // 只转义id、title这类非HTML列
    ->escapeColumns(['id', 'title'])
    ->make(true);

方案三:处理数据库中已二次转义的内容

如果数据库里的HTML已经被二次转义(比如存储时用了htmlspecialchars),取出时需要先做反转义处理:

return DataTables::of($yourDataQuery)
    ->addColumn('content', function ($record) {
        // 反转义后再返回内容
        return htmlspecialchars_decode($record->html_content_column);
    })
    ->rawColumns(['content'])
    ->make(true);

方案四:前端层面解析HTML

如果后端已经返回了转义后的字符串,前端可以用html()方法将内容插入到div中,而不是用text():

// 假设在Datatables的回调中拿到了行数据row
$('#target-div').html(row.content);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:05:21