• 技术文章 >php教程 >php手册

    php实现的CSS更新类实例

    2016-06-13 09:25:12原创515

    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核实处理。
    上一篇:PHP return语句另类用法不止是在函数中,return语句 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php利用新浪接口查询ip获取地理位置• 使用PHP 5.0 轻松解析XML文档(4)• PHP保存带BOM文件的方法,• smarty模板引擎从php中获取数据的方法,smarty模板• php 简单的缓存全站函数介绍
    1/1

    PHP中文网