Home  >  Article  >  Backend Development  >  css update class implemented by php

css update class implemented by php

WBOY
WBOYOriginal
2016-07-25 08:55:23828browse
  1. /**css update class, update the version of the image in the css file
  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 Added search_child parameter to traverse subfolders
  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. /**Initialization
  19. * @param String $csstmpl_path css template path
  20. * @param String $css_path css target path
  21. * @param Array $replacetags Image type to be replaced
  22. * @param boolean $search_child Whether to traverse subfolders, default 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. /**Update css file*/
  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. /**Traverse folders
  45. * @param String $path file 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. /**Check file suffix*/
  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. /**Replace template content and write to csspath
  78. * @param String $tmplfile template file
  79. * @param String $dfile target file
  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. /**output*/
  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更新类的源码下载地址。



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn