php实现的CSS更新类实例
来源: 阅读:631 次 日期:2014-10-11 10:05:35
温馨提示: 小编为您整理了“php实现的CSS更新类实例”,方便广大网友查阅!

CSSUpdate.class.php类文件如下:

<?php

/** 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.'/'.$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."<br>";

}

}

?>

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 = new CSSUpdate($csstmpl_path, $css_path, $replacetags);

$cssobj->update();

?>

更多信息请查看IT技术专栏

更多信息请查看网络编程
手机网站地址:php实现的CSS更新类实例
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map