正则表达式去除 HTML 注释

新手上路,请多包涵

寻找匹配和替换的正则表达式序列(最好是 PHP,但没关系)来改变它(开始和结束只是需要保留的随机文本)。

在:

 fkdshfks khh fdsfsk
<!--g1-->
<div class='codetop'>CODE: AutoIt</div>
<div class='geshimain'>
    <!--eg1-->
    <div class="autoit" style="font-family:monospace;">
        <span class="kw3">msgbox</span>
    </div>
    <!--gc2-->
    <!--bXNnYm94-->
    <!--egc2-->
    <!--g2-->
</div>
<!--eg2-->
fdsfdskh

到这个 OUT:

 fkdshfks khh fdsfsk
<div class='codetop'>CODE: AutoIt</div>
<div class='geshimain'>
    <div class="autoit" style="font-family:monospace;">
        <span class="kw3">msgbox</span>
    </div>
</div>
fdsfdskh

谢谢。

原文由 James Brooks 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 634
2 个回答

你只是想删除评论吗?怎么样

s/<!--[^>]*-->//g

或稍好一些(由提问者本人建议):

 <!--(.*?)-->

但是请记住,HTML 不是 正则的,因此使用正则表达式来解析它会导致你进入一个受伤的世界,当有人向它抛出奇怪的边缘情况时。

原文由 Paul Tomblin 发布,翻译遵循 CC BY-SA 2.5 许可协议

我知道这是一篇相当老的帖子,但我觉得添加到这篇文章中会很有用,以防有人想要一个易于实现的 PHP 函数来直接回答原始问题。

 /**
 * Strip all the html comments from $text
 *
 * @param $text - text to modify
 * @param string $new replacement string
 * @return array|string|string[]|null
 */
function strip_html_comments($text, $new=''){
    $search = array ("|<!--[\s\S]*?-->|si");
    $replace = array ($new);
    return preg_replace($search, $replace, $text);
}

原文由 Clinton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题