我在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);
答案 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);