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翻页类
Jun 01 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
从php核心代码分析require和include的区别
Jan 02 PHP
支持中文的php加密解密类代码
Nov 27 PHP
深入PHP数据缓存的使用说明
May 10 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php图片添加水印例子
2016/07/20 PHP
php实例化一个类的具体方法
2019/09/19 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
js实现中文实时时钟
2020/01/15 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python的语言类型(详解)
2017/06/24 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python实现C4.5决策树算法
2018/08/29 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
百度JavaScript笔试题
2015/01/15 面试题
教师实习自我鉴定
2013/12/14 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
Django实现翻页的示例代码
2021/05/24 Python