用PHP中的/ * comments * /替换//注释

时间:2009-11-19 15:54:37

标签: php regex code-generation

我在PHP中创建一个CSS生成器,它使用CSSX(是的,他们是我的想法)文件(使用特殊语法)。一个特征是“简短评论”:

body
{
    font-family: Georgia; //I really like this font!
}

现在我想用/ * ... * / comment替换这个注释,所以输出是这样的:

body
{
    font-family: Georgia; /*I really like this font!*/
}

我该怎么做?谢谢,

P.S。完整的CSSX文件被读入一个字符串变量 P.P.S这个问题得到解答。要修复url('// server / etc.cssx')问题,请使用:

$file =  preg_replace('~[^"\'\(]//([^\r\n]*)[^"\'\)]~', '/*$1*/', $file);

3 个答案:

答案 0 :(得分:5)

正则表达式可以解决这个问题:

$str = preg_replace('_//(.*)$_m', '/*$1*/', $str);

这不会考虑引用的字符串 - 如果你使用像

那样疯狂的东西
background-image: url('//my-server/my.jpg');

那么它会认为这是一个评论。 如果这是一个问题,那么你最好写一个合适的解析器。

答案 1 :(得分:3)

<? preg_replace('#//(.*)$#', '/*$1*/', $cssx); ?>

答案 2 :(得分:1)

Greg的表达有两个问题:第一,'m'和'$'是多余的,第二,它不能正确处理回车(如果你的系统使用它们)。

更好的表达似乎是

 preg_replace('~//([^\r\n]*)~', '/*$1*/', $str);