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学习之PHP表达式
Oct 09 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
PHP临时文件的安全性分析
Jul 04 PHP
yii实现创建验证码实例解析
Jul 31 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
PHP实现的浏览器检查类
Apr 11 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 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 日期时间处理函数小结
2009/12/18 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
干部鉴定材料
2014/05/18 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技