css直接去回车就行了
file_put_contents(存放路径,str_replace(array(\r\n, \r, \n), , file_get_contents(要压缩的css文件路径)));
$jsmin = new \common\extend\jsmin();
file_put_contents(存放路径, $jsmin->minify(file_get_contents(要压缩的js路径)) );
如有不明白的可以看我的博客,里面有一些php、js、css基础的教程
1.代码
下面是jsmin类 <?php /** * jsmin.php - php implementation of douglas crockford's jsmin. * * this is pretty much a direct port of jsmin.c to php with just a few * php-specific performance tweaks. also, whereas jsmin.c reads from stdin and * outputs to stdout, this library accepts a string as input and returns another * string as output. * * php 5 or higher is required. * * permission is hereby granted to use this version of the library under the * same terms as jsmin.c, which has the following license: * * -- * copyright (c) 2002 douglas crockford (www.crockford.com) * * permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "software"), to deal in * the software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the software, and to permit persons to whom the software is furnished to do * so, subject to the following conditions: * * the above copyright notice and this permission notice shall be included in all * copies or substantial portions of the software. * * the software shall be used for good, not evil. * * the software is provided "as is", without warranty of any kind, express or * implied, including but not limited to the warranties of merchantability, * fitness for a particular purpose and noninfringement. in no event shall the * authors or copyright holders be liable for any claim, damages or other * liability, whether in an action of contract, tort or otherwise, arising from, * out of or in connection with the software or the use or other dealings in the * software. * -- * * @package jsmin * @author ryan grove <ryan@wonko.com> * @copyright 2002 douglas crockford <douglas@crockford.com> (jsmin.c) * @copyright 2008 ryan grove <ryan@wonko.com> (php port) * @license http://opensource.org/licenses/mit-license.php mit license * @version 1.1.1 (2008-03-02) * @link http://code.google.com/p/jsmin-php/ */ namespace common\extend; class jsmin { const ord_lf = 10; const ord_space = 32; protected $a = ''; protected $b = ''; protected $input = ''; protected $inputindex = 0; protected $inputlength = 0; protected $lookahead = null; protected $output = ''; // -- public static methods -------------------------------------------------- public static function minify($js) { $jsmin = new jsmin($js); return $jsmin->min(); } // -- public instance methods ------------------------------------------------ public function __construct($input) { $this->input = str_replace("\r\n", "\n", $input); $this->inputlength = strlen($this->input); } // -- protected instance methods --------------------------------------------- protected function action($d) { switch($d) { case 1: $this->output .= $this->a; case 2: $this->a = $this->b; if ($this->a === "'" || $this->a === '"') { for (;;) { $this->output .= $this->a; $this->a = $this->get(); if ($this->a === $this->b) { break; } if (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated string literal.'); } if ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } } } case 3: $this->b = $this->next(); if ($this->b === '/' && ( $this->a === '(' || $this->a === ',' || $this->a === '=' || $this->a === ':' || $this->a === '[' || $this->a === '!' || $this->a === '&' || $this->a === '|' || $this->a === '?')) { $this->output .= $this->a . $this->b; for (;;) { $this->a = $this->get(); if ($this->a === '/') { break; } elseif ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } elseif (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated regular expression '. 'literal.'); } $this->output .= $this->a; } $this->b = $this->next(); } } } protected function get() { $c = $this->lookahead; $this->lookahead = null; if ($c === null) { if ($this->inputindex < $this->inputlength) { $c = $this->input[$this->inputindex]; $this->inputindex += 1; } else { $c = null; } } if ($c === "\r") { return "\n"; } if ($c === null || $c === "\n" || ord($c) >= self::ord_space) { return $c; } return ' '; } protected function isalphanum($c) { return ord($c) > 126 || $c === '\\' || preg_match('/^[\w\$]$/', $c) === 1; } protected function min() { $this->a = "\n"; $this->action(3); while ($this->a !== null) { switch ($this->a) { case ' ': if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } break; case "\n": switch ($this->b) { case '{': case '[': case '(': case '+': case '-': $this->action(1); break; case ' ': $this->action(3); break; default: if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } } break; default: switch ($this->b) { case ' ': if ($this->isalphanum($this->a)) { $this->action(1); break; } $this->action(3); break; case "\n": switch ($this->a) { case '}': case ']': case ')': case '+': case '-': case '"': case "'": $this->action(1); break; default: if ($this->isalphanum($this->a)) { $this->action(1); } else { $this->action(3); } } break; default: $this->action(1); break; } } } return $this->output; } protected function next() { $c = $this->get(); if ($c === '/') { switch($this->peek()) { case '/': for (;;) { $c = $this->get(); if (ord($c) <= self::ord_lf) { return $c; } } case '*': $this->get(); for (;;) { switch($this->get()) { case '*': if ($this->peek() === '/') { $this->get(); return ' '; } break; case null: throw new jsminexception('unterminated comment.'); } } default: return $c; } } return $c; } protected function peek() { $this->lookahead = $this->get(); return $this->lookahead; } } // -- exceptions --------------------------------------------------------------- class jsminexception {} //class jsminexception extends exception {} ?>
2.php代码
<?php /** * jsmin.php - php implementation of douglas crockford's jsmin. * * this is pretty much a direct port of jsmin.c to php with just a few * php-specific performance tweaks. also, whereas jsmin.c reads from stdin and * outputs to stdout, this library accepts a string as input and returns another * string as output. * * php 5 or higher is required. * * permission is hereby granted to use this version of the library under the * same terms as jsmin.c, which has the following license: * * -- * copyright (c) 2002 douglas crockford (www.crockford.com) * * permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "software"), to deal in * the software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the software, and to permit persons to whom the software is furnished to do * so, subject to the following conditions: * * the above copyright notice and this permission notice shall be included in all * copies or substantial portions of the software. * * the software shall be used for good, not evil. * * the software is provided "as is", without warranty of any kind, express or * implied, including but not limited to the warranties of merchantability, * fitness for a particular purpose and noninfringement. in no event shall the * authors or copyright holders be liable for any claim, damages or other * liability, whether in an action of contract, tort or otherwise, arising from, * out of or in connection with the software or the use or other dealings in the * software. * -- * * @package jsmin * @author ryan grove <ryan@wonko.com> * @copyright 2002 douglas crockford <douglas@crockford.com> (jsmin.c) * @copyright 2008 ryan grove <ryan@wonko.com> (php port) * @license http://opensource.org/licenses/mit-license.php mit license * @version 1.1.1 (2008-03-02) * @link http://code.google.com/p/jsmin-php/ */ namespace common\extend; class jsmin { const ord_lf = 10; const ord_space = 32; protected $a = ''; protected $b = ''; protected $input = ''; protected $inputindex = 0; protected $inputlength = 0; protected $lookahead = null; protected $output = ''; // -- public static methods -------------------------------------------------- public static function minify($js) { $jsmin = new jsmin($js); return $jsmin->min(); } // -- public instance methods ------------------------------------------------ public function __construct($input) { $this->input = str_replace("\r\n", "\n", $input); $this->inputlength = strlen($this->input); } // -- protected instance methods --------------------------------------------- protected function action($d) { switch($d) { case 1: $this->output .= $this->a; case 2: $this->a = $this->b; if ($this->a === "'" || $this->a === '"') { for (;;) { $this->output .= $this->a; $this->a = $this->get(); if ($this->a === $this->b) { break; } if (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated string literal.'); } if ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } } } case 3: $this->b = $this->next(); if ($this->b === '/' && ( $this->a === '(' || $this->a === ',' || $this->a === '=' || $this->a === ':' || $this->a === '[' || $this->a === '!' || $this->a === '&' || $this->a === '|' || $this->a === '?')) { $this->output .= $this->a . $this->b; for (;;) { $this->a = $this->get(); if ($this->a === '/') { break; } elseif ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } elseif (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated regular expression '. 'literal.'); } $this->output .= $this->a; } $this->b = $this->next(); } } } protected function get() { $c = $this->lookahead; $this->lookahead = null; if ($c === null) { if ($this->inputindex < $this->inputlength) { $c = $this->input[$this->inputindex]; $this->inputindex += 1; } else { $c = null; } } if ($c === "\r") { return "\n"; } if ($c === null || $c === "\n" || ord($c) >= self::ord_space) { return $c; } return ' '; } protected function isalphanum($c) { return ord($c) > 126 || $c === '\\' || preg_match('/^[\w\$]$/', $c) === 1; } protected function min() { $this->a = "\n"; $this->action(3); while ($this->a !== null) { switch ($this->a) { case ' ': if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } break; case "\n": switch ($this->b) { case '{': case '[': case '(': case '+': case '-': $this->action(1); break; case ' ': $this->action(3); break; default: if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } } break; default: switch ($this->b) { case ' ': if ($this->isalphanum($this->a)) { $this->action(1); break; } $this->action(3); break; case "\n": switch ($this->a) { case '}': case ']': case ')': case '+': case '-': case '"': case "'": $this->action(1); break; default: if ($this->isalphanum($this->a)) { $this->action(1); } else { $this->action(3); } } break; default: $this->action(1); break; } } } return $this->output; } protected function next() { $c = $this->get(); if ($c === '/') { switch($this->peek()) { case '/': for (;;) { $c = $this->get(); if (ord($c) <= self::ord_lf) { return $c; } } case '*': $this->get(); for (;;) { switch($this->get()) { case '*': if ($this->peek() === '/') { $this->get(); return ' '; } break; case null: throw new jsminexception('unterminated comment.'); } } default: return $c; } } return $c; } protected function peek() { $this->lookahead = $this->get(); return $this->lookahead; } } // -- exceptions --------------------------------------------------------------- class jsminexception {} //class jsminexception extends exception {} ?>
<?php /** * jsmin.php - php implementation of douglas crockford's jsmin. * * this is pretty much a direct port of jsmin.c to php with just a few * php-specific performance tweaks. also, whereas jsmin.c reads from stdin and * outputs to stdout, this library accepts a string as input and returns another * string as output. * * php 5 or higher is required. * * permission is hereby granted to use this version of the library under the * same terms as jsmin.c, which has the following license: * * -- * copyright (c) 2002 douglas crockford (www.crockford.com) * * permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "software"), to deal in * the software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the software, and to permit persons to whom the software is furnished to do * so, subject to the following conditions: * * the above copyright notice and this permission notice shall be included in all * copies or substantial portions of the software. * * the software shall be used for good, not evil. * * the software is provided "as is", without warranty of any kind, express or * implied, including but not limited to the warranties of merchantability, * fitness for a particular purpose and noninfringement. in no event shall the * authors or copyright holders be liable for any claim, damages or other * liability, whether in an action of contract, tort or otherwise, arising from, * out of or in connection with the software or the use or other dealings in the * software. * -- * * @package jsmin * @author ryan grove <ryan@wonko.com> * @copyright 2002 douglas crockford <douglas@crockford.com> (jsmin.c) * @copyright 2008 ryan grove <ryan@wonko.com> (php port) * @license http://opensource.org/licenses/mit-license.php mit license * @version 1.1.1 (2008-03-02) * @link http://code.google.com/p/jsmin-php/ */ namespace common\extend; class jsmin { const ord_lf = 10; const ord_space = 32; protected $a = ''; protected $b = ''; protected $input = ''; protected $inputindex = 0; protected $inputlength = 0; protected $lookahead = null; protected $output = ''; // -- public static methods -------------------------------------------------- public static function minify($js) { $jsmin = new jsmin($js); return $jsmin->min(); } // -- public instance methods ------------------------------------------------ public function __construct($input) { $this->input = str_replace("\r\n", "\n", $input); $this->inputlength = strlen($this->input); } // -- protected instance methods --------------------------------------------- protected function action($d) { switch($d) { case 1: $this->output .= $this->a; case 2: $this->a = $this->b; if ($this->a === "'" || $this->a === '"') { for (;;) { $this->output .= $this->a; $this->a = $this->get(); if ($this->a === $this->b) { break; } if (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated string literal.'); } if ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } } } case 3: $this->b = $this->next(); if ($this->b === '/' && ( $this->a === '(' || $this->a === ',' || $this->a === '=' || $this->a === ':' || $this->a === '[' || $this->a === '!' || $this->a === '&' || $this->a === '|' || $this->a === '?')) { $this->output .= $this->a . $this->b; for (;;) { $this->a = $this->get(); if ($this->a === '/') { break; } elseif ($this->a === '\\') { $this->output .= $this->a; $this->a = $this->get(); } elseif (ord($this->a) <= self::ord_lf) { throw new jsminexception('unterminated regular expression '. 'literal.'); } $this->output .= $this->a; } $this->b = $this->next(); } } } protected function get() { $c = $this->lookahead; $this->lookahead = null; if ($c === null) { if ($this->inputindex < $this->inputlength) { $c = $this->input[$this->inputindex]; $this->inputindex += 1; } else { $c = null; } } if ($c === "\r") { return "\n"; } if ($c === null || $c === "\n" || ord($c) >= self::ord_space) { return $c; } return ' '; } protected function isalphanum($c) { return ord($c) > 126 || $c === '\\' || preg_match('/^[\w\$]$/', $c) === 1; } protected function min() { $this->a = "\n"; $this->action(3); while ($this->a !== null) { switch ($this->a) { case ' ': if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } break; case "\n": switch ($this->b) { case '{': case '[': case '(': case '+': case '-': $this->action(1); break; case ' ': $this->action(3); break; default: if ($this->isalphanum($this->b)) { $this->action(1); } else { $this->action(2); } } break; default: switch ($this->b) { case ' ': if ($this->isalphanum($this->a)) { $this->action(1); break; } $this->action(3); break; case "\n": switch ($this->a) { case '}': case ']': case ')': case '+': case '-': case '"': case "'": $this->action(1); break; default: if ($this->isalphanum($this->a)) { $this->action(1); } else { $this->action(3); } } break; default: $this->action(1); break; } } } return $this->output; } protected function next() { $c = $this->get(); if ($c === '/') { switch($this->peek()) { case '/': for (;;) { $c = $this->get(); if (ord($c) <= self::ord_lf) { return $c; } } case '*': $this->get(); for (;;) { switch($this->get()) { case '*': if ($this->peek() === '/') { $this->get(); return ' '; } break; case null: throw new jsminexception('unterminated comment.'); } } default: return $c; } } return $c; } protected function peek() { $this->lookahead = $this->get(); return $this->lookahead; } } // -- exceptions --------------------------------------------------------------- class jsminexception {} //class jsminexception extends exception {} ?>
