php实现的CSS更新类实例

5年以前  |  阅读数:842 次  |  编程语言:PHP 

本文实例讲述了php实现的CSS更新类及其用法,非常实用。分享给大家供大家参考。具体如下:

CSSUpdate.class.php类文件如下:


    <?php 
    /** css 更新类,更新css文件内图片的版本 
    *  Date:  2013-02-05 
    *  Author: fdipzone 
    *  Ver:  1.1 
    * 
    *  Func: 
    *  update(); 
    * 
    *  Ver:  1.1 增加search_child参数,可遍历子文件夹 
    */ 

    class CSSUpdate{ 

      private $csstmpl_path = null; 
      private $css_path = null; 
      private $replacetags = array(); 
      private $search_child = false; 
      private $convert_num = 0; 
      private $is_ready = 0; 

      /** 初始化 
      * @param String $csstmpl_path css模版路径 
      * @param String $css_path   css目标路径 
      * @param Array  $replacetags 需要替换的图片类型 
      * @param boolean $search_child 是否遍历子文件夹,默认false 
      */ 
      public function __construct($csstmpl_path, $css_path, $replacetags=array(), $search_child=false){ 
        if(!is_dir($csstmpl_path) || !is_dir($css_path) || !$replacetags){ 
          $this->is_ready = 0; 
        }else{ 
          $this->csstmpl_path = $csstmpl_path; 
          $this->css_path = $css_path; 
          $this->replacetags = $replacetags; 
          $this->search_child = $search_child; 
          $this->is_ready = 1; 
        } 
      } 

      /** 更新css文件 */ 
      public function update(){ 
        if($this->is_ready==0){ 
          $this->response('csstmpl or csspath or replacetags error'); 
          return ''; 
        } 
        $this->traversing($this->csstmpl_path); 
        $this->response('covert num:'.$this->convert_num); 
      } 

      /** 遍历文件夹 
      * @param String $path 文件路径 
      */ 
      private function traversing($path){ 
        $handle = opendir($path); 
        while(($file=readdir($handle))!==false){ 
          if($file!='..' && $file!='.'){ 
            $curfile = $path.'/'.$file; 

            if(is_dir($curfile)){  // folder 
              if($this->search_child){  // 需要遍历子文件夹 
                $this->traversing($curfile); 
              } 
            }elseif($this->checkExt($curfile)){ // css file 
              $dfile = str_replace($this->csstmpl_path, $this->css_path, $curfile); 
              $this->create($curfile, $dfile); 
              $this->response($curfile.' convert to '.$dfile.' success'); 
              $this->convert_num ++; 
            } 
          } 
        } 
        closedir($handle); 
      } 

      /** 检查文件后缀 */ 
      private function checkExt($file){ 
        $name = basename($file); 
        $namefrag = explode('.', $name); 
        if(count($namefrag)>=2){ 
          if(strtolower($namefrag[count($namefrag)-1])=='css'){ // css文件 
            return true; 
          } 
        } 
        return false; 
      } 

      /** 替换模版内容,写入csspath 
      * @param String $tmplfile 模版文件 
      * @param String $dfile  目标文件 
      */ 
      private function create($tmplfile, $dfile){ 
        $css_content = file_get_contents($tmplfile); 
        foreach($this->replacetags as $tag){ 
          $css_content = str_replace($tag, $tag."?".date('YmdHis'), $css_content); 
        } 
        if(!is_dir(dirname($dfile))){  // 生成目标路径 
          mkdir(dirname($dfile), 0755, true); 
        } 
        file_put_contents($dfile, $css_content, true); 
      } 

      /** 输出 */ 
      private function response($content){ 
        echo $content."<br>"; 
      } 
    } 
    ?>

demo示例程序如下:


    <?php 
    require_once "CSSUpdate.class.php"; 

    define('ROOT_PATH', dirname(__FILE__)); 
    $css_path = ROOT_PATH.'/css'; 
    $csstmpl_path = ROOT_PATH.'/csstmpl'; 
    $replacetags = array('.png', '.jpg', '.gif'); 

    $cssobj = new CSSUpdate($csstmpl_path, $css_path, $replacetags); 
    $cssobj->update(); 
    ?>

完整源码点击此处本站下载

希望本文所述对大家PHP程序设计的学习有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例