SoFunction
Updated on 2025-03-03

CSS update class instance implemented by php

This article describes the CSS update class implemented by php and its usage, which is very practical. Share it for your reference. The details are as follows:

The class files are as follows:

<?php 
/** css update class, update the version of the picture in the css file
 * Date: 2013-02-05
 * Author: fdipzone
 * Ver: 1.1
 *
 * Func:
 * update();
 *
 * Ver: 1.1 Add search_child parameter to traverse subfolders
 */ 
 
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; 
 
  /** Initialization
   * @param String $csstmpl_path css template path
   * @param String $css_path css target path
   * @param Array $replacetags The type of image that needs to be replaced
   * @param boolean $search_child Whether to traverse subfolders, default 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; 
    } 
  } 
 
  /** Update css file */ 
  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); 
  } 
 
  /** traversal folders
   * @param String $path file 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){  // Requires traversal of subfolders            $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); 
  } 
 
  /** Check file suffix */ 
  private function checkExt($file){ 
    $name = basename($file); 
    $namefrag = explode('.', $name); 
    if(count($namefrag)>=2){ 
      if(strtolower($namefrag[count($namefrag)-1])=='css'){ // css file        return true; 
      } 
    } 
    return false; 
  } 
 
  /** Replace the template content and write to csspath
   * @param String $tmplfile template file
   * @param String $dfile target file
   */ 
  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))){  // Generate target path      mkdir(dirname($dfile), 0755, true); 
    } 
    file_put_contents($dfile, $css_content, true); 
  } 
 
  /** Output */ 
  private function response($content){ 
    echo $content."<br>"; 
  } 
} 
?>

The demo sample program is as follows:

<?php 
require_once ""; 
 
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(); 
?>

Click here for the full source codeDownload this site

I hope this article will be helpful to everyone's learning PHP programming.