|
本文实例讲述了php实现的CSS更新类及其用法,非常实用。分享给大家供大家参考。具体如下:
CSSUpdate.class.php类文件如下:
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."
";
}
}
?>
demo示例程序如下:
update();
?>
完整源码点击此处本站下载。
希望本文所述对大家PHP程序设计的学习有所帮助。
您可能感兴趣的文章:PHP更新购物车数量(表单部分/PHP处理部分)PHP中copy on write写时复制机制介绍PHP 之 写时复制介绍(Copy On Write)PHP定时更新程序设计思路分享PHP中调用SVN命令更新网站方法php强制更新图片缓存的方法php不使用copy()函数复制文件的方法php使用COPY函数更新配置文件的方法
|
|