问题
I'm creating a CSS generator in PHP which uses CSSX (yep, they are my idea) files (with a special syntax). One feature is 'short comments':
body
{
font-family: Georgia; //I really like this font!
}
Now I want to replace this comment with a /* ... */ comment, so the output is like this:
body
{
font-family: Georgia; /*I really like this font!*/
}
How can I do this? Thanks,
P.S. The complete CSSX file is read into one string variable.
P.P.S This q is answered. To fix the url('//server/etc.cssx') problem, use this:
$file = preg_replace('~[^"\'\(]//([^\r\n]*)[^"\'\)]~', '/*$1*/', $file);
回答1:
A regexp should do the trick:
$str = preg_replace('_//(.*)$_m', '/*$1*/', $str);
This won't take into account quoted strings - if you're using something crazy like
background-image: url('//my-server/my.jpg');
then it's going to think that's a comment. If this is a problem then you're better off writing a proper parser.
回答2:
<? preg_replace('#//(.*)$#', '/*$1*/', $cssx); ?>
回答3:
Greg's expression has two problems: first, 'm' and '$' are superfluous, second it doesn't handle carriage returns correctly (in case your system uses them).
A better expression appears to be
preg_replace('~//([^\r\n]*)~', '/*$1*/', $str);
来源:https://stackoverflow.com/questions/1764311/replacing-comments-with-comments-in-php