我想使用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]*?\*\/|([^:]|^)\/\/.*$/
但这是行不通的
答案 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;
}