本文实例讲述了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程序设计的学习有所帮助。