当前位置:首页 > PHP教程 > php应用 > 列表

php实现的CSS更新类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-14 10:51:22 浏览: 评论:0 

这篇文章主要介绍了php实现的CSS更新类及其用法实例,包括了针对模板文件的检查、更新与替换模板文件等功能,非常实用,需要的朋友可以参考下

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

CSSUpdate.class.php类文件如下:

  1. <?php  
  2. /** css 更新类,更新css文件内图片的版本  
  3. *  Date:  2013-02-05  
  4. *  Author: fdipzone  
  5. *  Ver:  1.1  
  6.  
  7. *  Func:  
  8. *  update();  
  9.  
  10. *  Ver:  1.1 增加search_child参数,可遍历子文件夹  
  11. */ 
  12.    
  13. class CSSUpdate{  
  14.    
  15.   private $csstmpl_path = null;  
  16.   private $css_path = null;  
  17.   private $replacetags = array();  
  18.   private $search_child = false;  
  19.   private $convert_num = 0;  
  20.   private $is_ready = 0;  
  21.    
  22.   /** 初始化  
  23.   * @param String $csstmpl_path css模版路径  
  24.   * @param String $css_path   css目标路径  
  25.   * @param Array  $replacetags 需要替换的图片类型  
  26.   * @param boolean $search_child 是否遍历子文件夹,默认false  
  27.   */ 
  28.   public function __construct($csstmpl_path$css_path$replacetags=array(), $search_child=false){  
  29.     if(!is_dir($csstmpl_path) || !is_dir($css_path) || !$replacetags){  
  30.       $this->is_ready = 0;  
  31.     }else{  
  32.       $this->csstmpl_path = $csstmpl_path;  
  33.       $this->css_path = $css_path;  
  34.       $this->replacetags = $replacetags;  
  35.       $this->search_child = $search_child;  
  36.       $this->is_ready = 1;  
  37.     }  
  38.   }  
  39.    
  40.   /** 更新css文件 */ 
  41.   public function update(){  
  42.     if($this->is_ready==0){  
  43.       $this->response('csstmpl or csspath or replacetags error');  
  44.       return '';  
  45.     }  
  46.     $this->traversing($this->csstmpl_path);  
  47.     $this->response('covert num:'.$this->convert_num);  
  48.   }  
  49.    
  50.   /** 遍历文件夹  
  51.   * @param String $path 文件路径  
  52.   */ 
  53.   private function traversing($path){  
  54.     $handle = opendir($path);  
  55.     while(($file=readdir($handle))!==false){  
  56.       if($file!='..' && $file!='.'){  
  57.         $curfile = $path.'/'.$file;  
  58.            
  59.         if(is_dir($curfile)){  // folder  
  60.           if($this->search_child){  // 需要遍历子文件夹  
  61.             $this->traversing($curfile);  
  62.           }  
  63.         }elseif($this->checkExt($curfile)){ // css file  
  64.           $dfile = str_replace($this->csstmpl_path, $this->css_path, $curfile);  
  65.           $this->create($curfile$dfile);  
  66.           $this->response($curfile.' convert to '.$dfile.' success');  
  67.           $this->convert_num ++;  
  68.         }  
  69.       }  
  70.     }  
  71.     closedir($handle);  
  72.   }  
  73.    
  74.   /** 检查文件后缀 */ 
  75.   private function checkExt($file){  
  76.     $name = basename($file);  
  77.     $namefrag = explode('.'$name);  
  78.     if(count($namefrag)>=2){  
  79.       if(strtolower($namefrag[count($namefrag)-1])=='css'){ // css文件  
  80.         return true;  
  81.       }  
  82.     }  
  83.     return false;  
  84.   }  
  85.    
  86.   /** 替换模版内容,写入csspath  
  87.   * @param String $tmplfile 模版文件  
  88.   * @param String $dfile  目标文件  
  89.   */ 
  90.   private function create($tmplfile$dfile){  
  91.     $css_content = file_get_contents($tmplfile);  
  92.     foreach($this->replacetags as $tag){  
  93.       $css_content = str_replace($tag$tag."?".date('YmdHis'), $css_content);  
  94.     }  
  95.     if(!is_dir(dirname($dfile))){  // 生成目标路径  
  96.       mkdir(dirname($dfile), 0755, true);  
  97.     }  
  98.     file_put_contents($dfile$css_content, true);  
  99.   } //www.phpfensi.com 
  100.    
  101.   /** 输出 */ 
  102.   private function response($content){  
  103.     echo $content."<br>";  
  104.   }  
  105. }  
  106. ?> 

demo示例程序如下:

  1. <?php  
  2. require_once "CSSUpdate.class.php";  
  3.    
  4. define('ROOT_PATH', dirname(__FILE__));  
  5. $css_path = ROOT_PATH.'/css';  
  6. $csstmpl_path = ROOT_PATH.'/csstmpl';  
  7. $replacetags = array('.png''.jpg''.gif');  
  8.    
  9. $cssobj = new CSSUpdate($csstmpl_path$css_path$replacetags);  
  10. $cssobj->update();  
  11. ?> 

 

Tags: php更新类

分享到: