服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - php实现的CSS更新类实例

php实现的CSS更新类实例

2020-07-29 15:31PHP教程网 PHP教程

这篇文章主要介绍了php实现的CSS更新类及其用法实例,包括了针对模板文件的检查、更新与替换模板文件等功能,非常实用,需要的朋友可以参考下

本文实例讲述了php实现的CSS更新类及其用法,非常实用。分享给大家供大家参考。具体如下:

CSSUpdate.class.php类文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?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示例程序如下:

?
1
2
3
4
5
6
7
8
9
10
11
<?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程序设计的学习有所帮助。

延伸 · 阅读

精彩推荐