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 相关文章推荐
zend api扩展的php对象的autoload工具
Apr 18 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP自定义多进制的方法
Nov 03 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
Yii2框架自定义类统一处理url操作示例
May 25 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
一个简单的MySQL数据浏览器
2006/10/09 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
php实现映射操作实例详解
2019/10/02 PHP
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
python实现机器人行走效果
2018/01/29 Python
python 剪切移动文件的实现代码
2018/08/02 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
解决Python3下map函数的显示问题
2019/12/04 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
css3中transition属性详解
2014/09/02 HTML / CSS
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
积极分子思想汇报
2014/01/04 职场文书
党员公开承诺书
2014/03/25 职场文书
求职简历自荐信
2014/06/18 职场文书
实习感想范文
2015/08/10 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android