【问题标题】:Is there a way to parse out HTML Comments on the Server side (PHP or MySQL)有没有办法在服务器端(PHP 或 MySQL)解析出 HTML 注释
【发布时间】:2010-12-02 14:03:13
【问题描述】:

我们需要一种在向用户显示而不是向开发人员显示时删除 HTML cmets 的方法。 我想知道最好的方法是什么。

【问题讨论】:

    标签: html parsing comments server-side


    【解决方案1】:

    您是从自己的 PHP 页面中删除 cmets,还是从字符串中的其他人的标记中删除 cmets?

    对于后者,请按照 Gumbo 的建议使用 HTML 解析器。不要使用正则表达式来解析 HTML,因为它不能。 (我需要为那个句子绑定一个热键。关于 SO 的每第三个问题都试图用正则表达式解析 HTML。这不是一个好主意。)

    如果您指的是前者,只需使用 PHP cmets 而不是 HTML cmets,您无需进行任何后期处理:

    <?php /* blah */ ?>
    

    【讨论】:

      【解决方案2】:

      最好使用DOMDocument 之类的解析器,遍历DOM 树并删除所有注释节点。或者您自己构建一个解析器。

      【讨论】:

        【解决方案3】:

        试试:

        $html = eregi_replace("<!--[^>]*-->", "", $html);
        

        或者使用preg_replace,如下所述:

        $html = preg_replace("/<!--(.|\s)*?-->/", "", $html);
        

        而且,是的,无论哪种方式,嵌入在字符串中的注释分隔符都会导致问题。

        【讨论】:

        • &lt;p title="&lt;!--"&gt;foo--&gt;&lt;/p&gt; 呢?
        • ereg 已弃用 PHP 正则表达式功能,因为在 PHP 6 中被删除。使用 preg_replace,无论如何它更快。
        猜你喜欢
        • 1970-01-01
        • 2017-09-23
        • 2019-08-22
        • 1970-01-01
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多