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

如何避免HTML标签转义以标记形式显示?PHP+Twig渲染问题求助

解决Twig渲染HTML标签被转义的问题

嘿,这个问题我太清楚啦!你遇到的是Twig默认的自动转义机制在搞事情——为了防范XSS攻击,Twig会自动把变量里的HTML特殊字符(比如<、>)转成实体字符(&lt;、&gt;),所以你的<b>标签就变成纯文本显示了,没法生效成加粗样式。

给你几个靠谱的解决方案,按需选就行:

  • 单次渲染时关闭转义:直接在模板里给变量加上|raw过滤器,写法变成:

    {{ var|raw }}
    

    这样Twig就会跳过对这个变量的转义,直接输出原始HTML,你就能看到#Something#的加粗效果了。

  • 提前标记变量为安全HTML:如果这个变量在整个项目里都不需要转义,你可以在PHP里用Twig的Markup类包装它:

    use Twig\Markup;
    $var = new Markup("<b>#Something#</b>", 'UTF-8');
    

    之后在模板里用{{ var }}渲染时,Twig会识别这是安全的HTML内容,不会进行转义。

  • 局部关闭模板的自动转义(不推荐除非你完全信任内容):如果有一大块内容都不需要转义,可以用autoescape标签包裹:

    {% autoescape false %}
        {{ var }}
        {# 这里其他不需要转义的内容 #}
    {% endautoescape %}
    

    注意:这种方式风险较高,如果内容里包含用户输入的部分,很容易引发XSS漏洞,所以优先用前两种精准控制的方式。

最后提醒一句:如果$var里的内容包含用户输入的部分,一定要先做好过滤和验证,确保没有恶意代码,再使用上述方法关闭转义,安全第一哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:50:12