php实现的CSS更新类实例

 更新时间:2014年09月22日 16:50:33   投稿:shichen2014  
这篇文章主要介绍了php实现的CSS更新类及其用法实例,包括了针对模板文件的检查、更新与替换模板文件等功能,非常实用,需要的朋友可以参考下

本文实例讲述了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多例模式介绍

    学习java就知道设计模式中有多例模式
    2013-06-06
  • PHP使用curl函数发送Post请求的注意事项

    PHP使用curl函数发送Post请求的注意事项

    这篇文章主要给大家介绍的是PHP使用curl函数发送Post请求的一些注意事项,文中通过示例代码与解释介绍的很详细,对大家学习或则使用PHP具有一定的参考借鉴价值,有需要的朋友们可以跟着小编一起来学习学习吧。
    2016-11-11
  • php实现遍历多维数组的方法

    php实现遍历多维数组的方法

    这篇文章主要介绍了php实现遍历多维数组的方法,涉及php针对多维数组的遍历与递归操作实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • PHP实现的激活用户注册验证邮箱功能示例

    PHP实现的激活用户注册验证邮箱功能示例

    这篇文章主要介绍了PHP实现的激活用户注册验证邮箱功能,详细分析了php邮件激活用户所涉及的数据库、邮件相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • php封装的数据库函数与用法示例【参考thinkPHP】

    php封装的数据库函数与用法示例【参考thinkPHP】

    这篇文章主要介绍了php封装的数据库函数与用法,基于thinkPHP中数据库操作相关代码整理简化而来,包括针对数据库的设置、连接、查询及日志操作等功能,简单实用,需要的朋友可以参考下
    2016-11-11
  • 解决File size limit exceeded 错误的方法

    解决File size limit exceeded 错误的方法

    本篇文章是对File size limit exceeded 错误进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php自定义urlencode,urldecode函数实例

    php自定义urlencode,urldecode函数实例

    这篇文章主要介绍了php自定义urlencode,urldecode函数,实例分析了php字符串转码的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php识别翻转iphone拍摄的颠倒图片

    php识别翻转iphone拍摄的颠倒图片

    这篇文章主要介绍了php识别翻转iphone拍摄的颠倒图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • PHP常用header头定义代码示例汇总

    PHP常用header头定义代码示例汇总

    这篇文章主要介绍了PHP常用header头定义代码示例汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • PHP设计模式之解释器模式浅析

    PHP设计模式之解释器模式浅析

    解释器模式,它是什么呢?意思就是,给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,这是最实在的一种说法。我们还可以理解为它是用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作
    2023-04-04

最新评论