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的知识
Nov 17 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
基于PHP文件操作的详解
Jun 05 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
小谈php正则提取图片地址
Mar 27 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
PHP内存溢出优化代码详解
Feb 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
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
Python函数参数操作详解
2018/08/03 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python异步存储数据详解
2019/03/19 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
创建文明学校实施方案
2014/03/11 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
2015年度党员个人总结
2015/02/14 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
推广普通话主题班会
2015/08/17 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
MySQL获取所有分类的前N条记录
2021/05/07 MySQL