Heim >php教程 >php手册 >php实现的CSS更新类实例

php实现的CSS更新类实例

WBOY
WBOYOriginal
2016-06-13 09:25:121030Durchsuche

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.'/'.$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(); 

?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn