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 相关文章推荐
文件上传的实现
Oct 09 PHP
PHP学习之PHP表达式
Oct 09 PHP
我的论坛源代码(二)
Oct 09 PHP
一步一步学习PHP(6) 面向对象
Feb 16 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
php下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP中if和or运行效率对比
Dec 12 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
基于PHP制作验证码
2016/10/12 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
标准自荐信范文
2014/01/29 职场文书
科研先进个人典型材料
2014/01/31 职场文书
愚人节活动策划方案
2014/03/11 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
使用Redis实现实时排行榜功能
2021/07/02 Redis
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers