php实现的css更新类

发布时间:2020-02-23编辑:脚本学堂
分享一个php实现的css样式的更新类,可以更新css文件内的图片,可遍历子目录,挺不错一个css类,有需要的朋友参考下。

本节内容:
更新css文件内容的php类。

1,类文件 CSSUpdate.class.php
 

复制代码 代码示例:
<?php 
/** css 更新类,更新css文件内图片的版本
*   Date:   2013-02-05
*   Author: fdipzone
*   Ver:    1.1
*   Edit: www.jb200.com
*   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>"; 
    }
}
?> 

2,演示示例 demo.php
 

复制代码 代码示例:
<?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 css更新类的源码下载地址