如何在php中为css缩小编写更好的正则表达式?

hit*_*uct 0 css php regex minify

是)我有的

我在php中有以下正则表达式来缩小原始css字符串:

function compress( $css ) {
    $css = str_replace('; ',';', $css);
    $css = str_replace(': ',':', $css);
    $css = str_replace(', ',',', $css);

    $css = str_replace(' }','}', $css);
    $css = str_replace('} ','}', $css);

    $css = str_replace('{ ','{', $css);
    $css = str_replace(' {','{', $css);

    $css = str_replace('( ','(', $css);
    $css = str_replace(' (','(', $css);

    $css = str_replace(' )',')', $css);
    $css = str_replace(') ',')', $css);

    $css = str_replace(array("\r\n","\r","\n","\t",'  ','    ','    '),"",preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!','',$css));

    return $css;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但代码很糟糕.

题

有人知道更好的写这个方法吗?

cat*_*key 6

我已经经历了很多次,目前我有一个运行良好的实现.

// comments
$string = preg_replace('!/\*.*?\*/!s','', $string);
$string = preg_replace('/\n\s*\n/',"\n", $string);

// space
$string = preg_replace('/[\n\r \t]/',' ', $string);
$string = preg_replace('/ +/',' ', $string);
$string = preg_replace('/ ?([,:;{}]) ?/','$1',$string);

// trailing;
$string = preg_replace('/;}/','}',$string);
Run Code Online (Sandbox Code Playgroud)

我把它实现为Twig过滤器:https://github.com/catchamonkey/CatchamonkeyAsseticFilterBundle