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

在PHP中如何正确显示特殊字符“-->” 避免被识别为HTML注释?

第三方数据含-->导致HTML注释逃逸问题解决方法
  • 优先使用官方内置转义能力
    你当前用的Laravel Blade模板默认的{{ }}语法会自动调用htmlspecialchars转义HTML特殊字符,正常会将>转义为>,打断-->的连续序列。如果该规则失效,可手动强制指定转义规则,代码修改为:
@foreach ($bus['bus_infos2'] as $bus)
      <li>{{ htmlspecialchars($bus->name, ENT_QUOTES) }}</li>
@endforeach

ENT_QUOTES参数会同时转义单双引号,覆盖所有常见HTML特殊字符场景。

  • 不可转义特殊字符场景的兼容方案
    如果业务要求必须保留原始字符的显示格式,不能做全局HTML转义,可以针对风险序列做定向替换:
    1. 替换-->为--&gt;,仅转义序列末尾的大于号,不影响其他内容显示
    2. 或者在--和>之间插入零宽空格(&#8203;),替换为--&#8203;>,既可以打断HTML解析器识别的注释闭合序列,用户肉眼也看不到额外字符
      对应代码示例:
{{ str_replace('-->', '--&#8203;>', $bus->name) }}
  • 规避高风险输出场景
    不要将不可信的第三方原始数据输出到HTML注释块(<!-- 内容 -->)内部,HTML解析器会优先按原始字符流匹配注释闭合标记,即使做了实体转义也存在逃逸风险。如果必须放入注释块,需提前过滤所有--和<、>字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:57:05