Laravel中函数返回带CSS类的span标签为何仅输出代码?
问题原因及解决办法
原因
Laravel Blade的{{ }}语法默认会对输出内容做HTML转义,它会把HTML标签中的特殊字符(比如<、>、")转换成对应的HTML实体(<、>、"),以此避免XSS攻击。所以你调用{{subject()}}时,返回的<span class="subject"></span>被转义后,页面只会显示纯文本形式的标签代码,无法渲染成实际的HTML元素。
解决办法
- 使用Blade的
{!! !!}语法输出,这个语法会跳过HTML转义,直接渲染原始HTML内容:{!! subject() !!} - 注意:如果
subject()函数的返回内容包含用户提交的未过滤数据,直接用{!! !!}输出会有XSS风险,务必先对用户输入做过滤和安全处理。
内容的提问来源于stack exchange,提问作者Unkown Kid
相关产品推荐
相关产品推荐

