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&amp;MYSQL留言板源码
Jul 19 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php转换颜色为其反色的方法
Apr 27 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 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
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
python实现提取百度搜索结果的方法
2015/05/19 Python
Python验证码识别的方法
2015/07/10 Python
Python中subprocess的简单使用示例
2015/07/28 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python的条件锁与事件共享详解
2019/09/12 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
2014年信用社工作总结
2014/11/25 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python
Hive常用日期格式转换语法
2022/06/25 数据库