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

PHP如何将包含嵌套HTML注释的字符串原样写入HTML注释

解决方案

核心原理是利用HTML连续注释的语法特性,在不修改原始输入内容任何字符的前提下,将输入中会导致注释提前闭合的-->序列拆分到相邻的两个注释块中,既保证原始内容完整保留,也不会出现注释提前截断的问题。

实现逻辑

  • HTML注释唯一的非法终止序列是-->,只要出现该序列就会终止当前注释。我们不需要修改原始内容的任何字符,只需要将-->中的--保留在上一个注释末尾,>放到下一个注释开头即可。
  • 额外处理边界场景:如果输入内容末尾为--,需要单独拆分避免和最终的注释闭合标记-->冲突。

改造后的PHP代码

function show_html_comment($comment)
{
    // 拆分所有内部的-->序列,原始字符完全保留
    $processed = str_replace('-->', '--><!-- >', $comment);
    // 兼容低版本PHP,判断末尾是否为--,避免和闭合标记冲突
    if (substr($processed, -2) === '--') {
        $processed .= '--><!--';
    }
    echo '<!-- ' . $processed . ' -->';
}

效果验证

传入测试参数$comment = '<!-- foo -->'时,最终输出为:

<!-- <!-- foo --><!-- > -->

该输出完全符合要求:

  • 原始输入的所有字符<!-- foo -->完整保留在输出中,没有任何转义或修改
  • 浏览器会将其解析为两个连续的合法注释,不会出现注释提前闭合、后续内容泄露到页面的问题
  • 查看页面源代码时可以完整识别到原始的注释内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:24:03