php实现的CSS更新类实例


Posted in PHP onSeptember 22, 2014

本文实例讲述了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 相关文章推荐
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
php实现的漂亮分页方法
Apr 17 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
PHP 正则表达式小结
Feb 12 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
php封装json通信接口详解及实例
Mar 07 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
php的XML文件解释类应用实例
Sep 22 #PHP
php实现的返回数据格式化类实例
Sep 22 #PHP
php实现的替换敏感字符串类实例
Sep 22 #PHP
php实现的发送带附件邮件类实例
Sep 22 #PHP
PHP实现AES256加密算法实例
Sep 22 #PHP
php生成QRcode实例
Sep 22 #PHP
php实现的Captcha验证码类实例
Sep 22 #PHP
You might like
php csv操作类代码
2009/12/14 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
Python返回真假值(True or False)小技巧
2015/04/10 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
CSS3简单实现照片墙
2014/12/12 HTML / CSS
化学专业毕业生自荐信
2013/11/15 职场文书
公司联欢会策划方案
2014/05/19 职场文书
行政复议决定书
2015/06/24 职场文书
协议书格式模板
2016/03/24 职场文书
500字作文之难忘的同学
2019/12/20 职场文书