php壓縮css和js

              時間:2014-06-23 來源:天津文率科技有限公司

              首先你要知道php 《JSMin》 這個類,壓縮js很方便

              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基礎的教程

              韓文博的新浪博客:http://blog.sina.com.cn/u/1783136603

              更多網站建設方面的教程可以看經常來看我們的官網,頻繁更新中,天津網站建設 www.feiyangmo.com
              下面是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 {}
              ?>

              聯絡方式:

              中國 · 天津市河西區南京路35號亞太大廈1403室
              電話:15620613686
              郵編:300220