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 相关文章推荐
转换中文日期的PHP程序
Oct 09 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP7常量数组用法分析
2016/09/26 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
python中return的返回和执行实例
2019/12/24 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
小区门卫值班制度
2014/01/24 职场文书
食品安全承诺书
2014/05/22 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
离职证明范本
2015/06/12 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python