php实现的CSS更新类实例

原创
2016-06-13 09:25:12 635浏览

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

/** 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.'//m.sbmmt.com/m/'.$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."
";

}

}

?>

demo示例程序如下:

1

2

3

4

5

6

7

8

9

10

11

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();

?>

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。