正则表达式删除CSS注释

时间:2010-10-21 04:51:02

标签: php regex

我想在php中编写正则表达式,以匹配双引号和单引号中的行。实际上我正在编写用于删除css文件中注释行的代码。

像:

"/* I don't want to remove this line */"

/* I want to remove this line */

例如:

- valid code /* comment */ next valid code "/* not a comment */" /* this is comment */

预期结果:

- valid code next valid code "/* not a comment */"

请任何人根据我的要求在php中给我一个正则表达式。

1 个答案:

答案 0 :(得分:14)

以下应该这样做:

preg_replace( '/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/' , '' , $theString );

测试用例:

$theString = '- valid code /* comment */ next valid code "/* not a comment */" /* this is comment */';

preg_replace( '/(?!<\")\/\*[^\*]+\*\/(?!\")/' , ' ' , $theString );

# Returns 'valid code next valid code "/* not a comment */" '

修订:2014年11月28日

根据@hexalys的评论,他提到http://www.catswhocode.com/blog/3-ways-to-compress-css-files-using-php

根据该文章,更新后的正则表达式为:

preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!' , '' , $theString );