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中GET变量的使用
Oct 09 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
CentOS安装php v8js教程
Feb 26 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
php数值转换时间及时间转换数值用法示例
May 18 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
PHP重载基础知识回顾
Sep 10 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开发注意事项总结
2015/02/04 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python装饰器用法实例分析
2019/01/14 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
python中判断文件结束符的具体方法
2020/08/04 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
JSF的标签库有哪些
2012/04/27 面试题
企业人事任命书
2014/06/05 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
英语导游欢迎词
2015/09/30 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS