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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
基于php编程规范(详解)
Aug 17 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
PHP7新特性
Mar 09 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 intval的测试代码发现问题
2008/07/27 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
四好少年事迹材料
2014/01/12 职场文书
留学推荐信怎么写
2014/01/25 职场文书
爱情保证书范文
2014/02/01 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python