-
- /**css更新クラス、cssファイル内の画像のバージョンを更新します
- * 日付: 2013-02-05
- * 著者: fdipzone
- * バージョン: 1.1
- * 編集: bbs.it-home.org
- * 機能:
- * update() ;
- *
- * Ver: 1.1 サブフォルダーをトラバースするための search_child パラメーターを追加しました
- */
-
- class CSSUpdate{
- private $csstmpl_path = null;
- プライベート $css_path = null;
- プライベート $replacetags = array();
- プライベート $search_child = false;
- プライベート $convert_num = 0;
- プライベート $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 または csspath または replacetags エラー');
- 「」を返します;
- }
- $this->traversing($this->csstmpl_path);
- $this->response('covert num:'.$this->convert_num);
- }
-
- /**フォルダーを走査
- * @param String $path ファイル パス
- */
- プライベート関数 traversing($path){
- $handle = opendir($path);
- while(($file=readdir($handle))!==false){
- if($file!='..' && $file!='.'){
- $curfile = $path.'/' .$ファイル;
-
- if(is_dir($curfile)){ // フォルダー
- if($this->search_child){ // 必要遍历子文件夹
- $this->traversing($curfile);
- }
- }elseif($this->checkExt($curfile)){ // CSS ファイル
- $dfile = str_replace($this->csstmpl_path, $this->css_path, $curfile);
- $this->create($curfile, $dfile);
- $this->response($curfile.' '.$dfile.' に変換成功');
- $this->convert_num ++;
- }
- }
- }
- Closedir($handle);
- }
-
- /**ファイルの拡張子をチェックする*/
- プライベート関数 checkExt($file){
- $name = Basename($file);
- $namefrag =explode('.', $name);
- if(count($namefrag)>=2){
- if(strto lower($namefrag[count($namefrag)-1])=='css'){ // css 文件
- return true;
- }
- }
- false を返します。
- }
-
- /**テンプレートの内容を置き換えて csspath に書き込みます
- * @param String $tmplfile テンプレート ファイル
- * @param String $dfile ターゲット ファイル
- */
- プライベート関数 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."
";
- }
- }
- ?>
复制代码
2、演示例demo.php
-
-
- 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 = 新しい CSSUpdate($csstmpl_path, $css_path, $replacetags);
- $cssobj->update();
- ?>
-
卷制コード
附、php css更新类的ソースコード下方地址。
|