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中uploaded_files函数使用方法详解
Mar 09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
8个必备的PHP功能开发
Oct 02 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 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接收POST数据,解析json数据
2013/06/28 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
Python查找相似单词的方法
2015/03/05 Python
Python安装第三方库的3种方法
2015/06/21 Python
django 消息框架 message使用详解
2019/07/22 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
毕业生就业意向书
2014/04/01 职场文书
学校文明单位申报材料
2014/05/06 职场文书
承诺函格式模板
2015/01/21 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏