使用Regex删除JavaScript注释-PHP

时间:2019-04-06 16:03:34

标签: javascript php html

我想使用PHP && Regex代码来缩小HTML代码

缩小功能:

public static function sanitize_output($buffer) {

    $search = array(
        '/ {2,}/',
        '/<!--.*?-->|\t|(?:\r?\n[ \t]*)+/s'
    );
    $replace = array(
        ' ',
        ''
    );
    $buffer = preg_replace($search, $replace, $buffer);

    return $buffer;
}

我在渲染模板(HTML文件)时使用此功能,但是在控制台上总是会收到此错误

  复合语句注释中的

SyntaxError:缺少}:{在行中打开

缩小代码在Js代码上删除了一些“ {”,是否有解决此问题的解决方案?

经过一番搜索,我发现错误出在JS注释中,当我缩小HTML代码时,注释与代码连接在一起。

我尝试使用此正则表达式

/\/\*[\s\S]*?\*\/|([^:]|^)\/\/.*$/ 

但这是行不通的

1 个答案:

答案 0 :(得分:0)

就像您说的那样,当您使用该函数缩小代码时,所有HTML代码都在一行中,因此JS注释之后的任何代码都应成为注释。 因此,您可以使用此PHP正则表达式删除内联JavaScript注释:

您的新功能:

 public static function sanitize_output($buffer) {

        $search = array(
            '#^\s*//.+$#m', //remove JS comment,
            '/ {2,}/',
            '/<!--.*?-->|\t|(?:\r?\n[ \t]*)+/s'
        );
        $replace = array(
            '',
            ' ',
            ''
        );
        $buffer = preg_replace($search, $replace, $buffer);

        return $buffer;
    }