压缩CSS使用的preg_replace(Minify CSS using preg_replace

2019-08-03 18:02发布

我试图来缩小使用的preg_replace多个CSS文件。 其实,我只是想从文件中删除任何换行符/制表符和评论。 我以下工作:

$regex = array('{\t|\r|\n}', '{(/\*(.*?)\*/)}');
echo preg_replace($regex, '', file_get_contents($file));

但我想这样做在一个多正则表达式,像这样:

$regex = <<<EOF
{(
    \t
|
    \r
|
    \n
|
    /\*(.*?)\*/
)}x
EOF;
echo preg_replace($regex, '', file_get_contents($file));

然而,这并不在做任何事情都。 有没有办法做到这一点?


编辑:好,所以我会看看现有minifiers,但它仍然给我留下的问题,我会怎么做一个多正则表达式这样的,因为与x修饰符多regexs甚至应该在PHP做工精细,不该” Ť他们?

Answer 1:

有可用的实用工具,可满足您的需求,并为您节省潜在的马车正则表达式。

该YUI压缩机支持CSS和JavaScript文件的缩小。

您可能希望编写自己的之前,需要考虑这个或其他现有选项。



Answer 2:

我不知道你将如何做到这一点,但这里是一个脚本,我的朋友写的,这是非常快的缩小CSS:

function minimize_css($input)
{
    // Remove comments
    $output = preg_replace('#/\*.*?\*/#s', '', $input);
    // Remove whitespace
    $output = preg_replace('/\s*([{}|:;,])\s+/', '$1', $output);
    // Remove trailing whitespace at the start
    $output = preg_replace('/\s\s+(.*)/', '$1', $output);
    // Remove unnecesairy ;'s
    $output = str_replace(';}', '}', $output);
    return $output;
}


Answer 3:

这是我个人使用的CSS:

$file_contents = file_get_contents($file);<br />
preg_replace('@({)\s+|(\;)\s+|/\*.+?\*\/|\R@is', '$1$2 ', $file_contents);


Answer 4:

这似乎是时重新发明轮子一个很好的例子。 几乎在互联网上的每一个网站使用CSS,所有的大的以某种方式进行压缩。 他们的方法已经经过测试和优化。 为什么,如果你没有推出自己的?

迈克和Grumbo给了具体的建议了,但我只是想指出的一般原则。



Answer 5:

据我知道你不能这样做,因为你实际上变着花样当你打破它成多行。

编辑:,是的,+1不重新发明轮子。



Answer 6:

这是我使用的是什么Samstyle PHP框架 :

$regex = array(
"`^([\t\s]+)`ism"=>'',
"`([:;}{]{1})([\t\s]+)(\S)`ism"=>'$1$3',
"`(\S)([\t\s]+)([:;}{]{1})`ism"=>'$1$3',
"`\/\*(.+?)\*\/`ism"=>"",
"`([\n|\A|;]+)\s//(.+?)[\n\r]`ism"=>"$1\n",
"`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
);
$buffer = preg_replace(array_keys($regex),$regex,$buffer);

希望这可以帮助!



Answer 7:

function minifyCSS($css){
    $css = trim($css);
    $css = str_replace("\r\n", "\n", $css);
    $search = array("/\/\*[^!][\d\D]*?\*\/|\t+/","/\s+/", "/\}\s+/");
    $replace = array(null," ", "}\n");
    $css = preg_replace($search, $replace, $css);
    $search = array("/;[\s+]/","/[\s+];/","/\s+\{\\s+/", "/\\:\s+\\#/", "/,\s+/i", "/\\:\s+\\\'/i","/\\:\s+([0-9]+|[A-F]+)/i","/\{\\s+/","/;}/");
    $replace = array(";",";","{", ":#", ",", ":\'", ":$1","{","}");
    $css = preg_replace($search, $replace, $css);
    $css = str_replace("\n", null, $css);
    return $css;    

}


http://mhameen.blogspot.com/2010/04/crystal-script-manger-for-php.html#links



文章来源: Minify CSS using preg_replace