欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php实现的css更新类

程序员文章站 2022-05-01 13:58:47
...
  1. /** css 更新类,更新css文件内图片的版本
  2. * Date: 2013-02-05
  3. * Author: fdipzone
  4. * Ver: 1.1
  5. * Edit: bbs.it-home.org
  6. * Func:
  7. * update();
  8. *
  9. * Ver: 1.1 增加search_child参数,可遍历子文件夹
  10. */
  11. class CSSUpdate{
  12. private $csstmpl_path = null;
  13. private $css_path = null;
  14. private $replacetags = array();
  15. private $search_child = false;
  16. private $convert_num = 0;
  17. private $is_ready = 0;
  18. /** 初始化
  19. * @param String $csstmpl_path css模版路径
  20. * @param String $css_path css目标路径
  21. * @param Array $replacetags 需要替换的图片类型
  22. * @param boolean $search_child 是否遍历子文件夹,默认false
  23. */
  24. public function __construct($csstmpl_path, $css_path, $replacetags=array(), $search_child=false){
  25. if(!is_dir($csstmpl_path) || !is_dir($css_path) || !$replacetags){
  26. $this->is_ready = 0;
  27. }else{
  28. $this->csstmpl_path = $csstmpl_path;
  29. $this->css_path = $css_path;
  30. $this->replacetags = $replacetags;
  31. $this->search_child = $search_child;
  32. $this->is_ready = 1;
  33. }
  34. }
  35. /** 更新css文件 */
  36. public function update(){
  37. if($this->is_ready==0){
  38. $this->response('csstmpl or csspath or replacetags error');
  39. return '';
  40. }
  41. $this->traversing($this->csstmpl_path);
  42. $this->response('covert num:'.$this->convert_num);
  43. }
  44. /** 遍历文件夹
  45. * @param String $path 文件路径
  46. */
  47. private function traversing($path){
  48. $handle = opendir($path);
  49. while(($file=readdir($handle))!==false){
  50. if($file!='..' && $file!='.'){
  51. $curfile = $path.'/'.$file;
  52. if(is_dir($curfile)){ // folder
  53. if($this->search_child){ // 需要遍历子文件夹
  54. $this->traversing($curfile);
  55. }
  56. }elseif($this->checkExt($curfile)){ // css file
  57. $dfile = str_replace($this->csstmpl_path, $this->css_path, $curfile);
  58. $this->create($curfile, $dfile);
  59. $this->response($curfile.' convert to '.$dfile.' success');
  60. $this->convert_num ++;
  61. }
  62. }
  63. }
  64. closedir($handle);
  65. }
  66. /** 检查文件后缀 */
  67. private function checkExt($file){
  68. $name = basename($file);
  69. $namefrag = explode('.', $name);
  70. if(count($namefrag)>=2){
  71. if(strtolower($namefrag[count($namefrag)-1])=='css'){ // css文件
  72. return true;
  73. }
  74. }
  75. return false;
  76. }
  77. /** 替换模版内容,写入csspath
  78. * @param String $tmplfile 模版文件
  79. * @param String $dfile 目标文件
  80. */
  81. private function create($tmplfile, $dfile){
  82. $css_content = file_get_contents($tmplfile);
  83. foreach($this->replacetags as $tag){
  84. $css_content = str_replace($tag, $tag."?".date('YmdHis'), $css_content);
  85. }
  86. if(!is_dir(dirname($dfile))){ // 生成目标路径
  87. mkdir(dirname($dfile), 0755, true);
  88. }
  89. file_put_contents($dfile, $css_content, true);
  90. }
  91. /** 输出 */
  92. private function response($content){
  93. echo $content."
    ";
  94. }
  95. }
  96. ?>
复制代码

2,演示示例 demo.php

  1. require_once "CSSUpdate.class.php";
  2. define('ROOT_PATH', dirname(__FILE__));
  3. $css_path = ROOT_PATH.'/css';
  4. $csstmpl_path = ROOT_PATH.'/csstmpl';
  5. $replacetags = array('.png', '.jpg', '.gif');
  6. $cssobj = new CSSUpdate($csstmpl_path, $css_path, $replacetags);
  7. $cssobj->update();
  8. ?>
复制代码

附, php css更新类的源码下载地址。