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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php中error与exception的区别及应用
Jul 28 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
php curl发送请求实例方法
Aug 01 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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代码
2010/08/08 PHP
PHP如何实现跨域
2016/05/30 PHP
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
vue与django集成打包的实现方法
2019/11/11 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python获取网页状态码示例
2014/03/30 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
音乐教学反思
2014/02/02 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
植树节口号
2014/06/21 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
爱心捐款感谢信
2015/01/20 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记