php实现的CSS更新类实例
作者:shichen2014 发布时间:2023-11-21 22:28:30
标签:php,CSS
本文实例讲述了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();
?>
完整源码点击此处本站下载。
希望本文所述对大家PHP程序设计的学习有所帮助。


猜你喜欢
- 一、抓取全部评论吾的这篇文章,有 1022 次评论,一条条看,吾看不过来,于是想到 Python 词云,提取关键词,倒也是一桩趣
- Python3.6.4必须downgrade成3.5pip版本最低9.0.3自己的电脑必须已经安装好git关于anaconda prompt
- 1.元组的创建元组(tuple):元组本身是不可变数据类型,没有增删改查元组内可以存储任意数据类型t = (1,2.3,True,'
- 本文实例讲述了mysql聚簇索引的页分裂。分享给大家供大家参考,具体如下:在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储
- 本文实例主要是实现爬取一个网页上的图片地址,具体如下。读取一个网页的源代码:import urllib.requestdef getHtml
- FCKeditor为一开源多功能在线Web编辑器。官方网站:http://www.fckeditor.net/。相关安全文件参看:《在.ne
- 双击编辑功能如何实现:例如:标题 (鼠标双击“标题”文字 即出现可编辑的输入框形式及提交按钮) <!D
- 本文详细汇总了MySQL学习中的各类技巧,分享给大家供大家参考。具体如下:/* 启动MySQL */net start mysql/* 连接
- 引言“ 这是MySQL系列笔记的第一篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或
- XML的未来 现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项。但还不只这些。考虑一个数据交换对其
- 其实锁这种东西,都能能不加就不加,锁会导致程序一定程度上退回到串行化,进而降低效率。案例首先,看一个案例,如果要实现一个计数器,并且是多个协
- python中的class_static的@classmethod的使用 classmethod的使用,主要针对的是类而不是对象,在定义类的
- 在事务性语句执行过程中,服务器将会进行额外的处理,在服务器执行时多个事务是并行执行的,为了把他们的记录在一起,需要引入事务缓存的概念。在事务
- “正则表达式”对象,我们就可以非常方便的对各种数据进行合法性的校验了。首先,让我们来了解一下究竟什么
- PHP并非不能实现HTTP服务,一般来讲,这叫网络编程或Socket编程。在学习到其他语言的这部分的时候,一般的思路就是如何监听TCP实现一
- 如下所示:>> type(np.newaxis)NoneType>> np.newaxis == NoneTruen
- 这篇文章主要介绍了python全局变量引用与修改过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 如下所示:#求一个数的最大约数(不算本身)def getmaxnum(n): num = n //2 while n
- 场景描述在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found wh
- count()方法返回obj出现在列表的次数。语法以下是count()方法的语法:list.count(obj)参数