生成静态页面的PHP类


Posted in PHP onNovember 25, 2006
<?php  
class html  
{  
 var $dir; //dir for the htmls(without/)  
 var $rootdir; //root of html files(without/):html  
 var $name; //html文件存放路径  
 var $dirname; //指定的文件夹名称  
 var $url; //获取html文件信息的来源网页地址  
 var $time; //html文件信息填加时的时间  
 var $dirtype; //目录存放方式:year,month,,,,  
 var $nametype; //html文件命名方式:name   function html($nametype='name',$dirtype='year',$rootdir='html')  
 {  
 $this->setvar($nametype,$dirtype,$rootdir);  
 }  
 function setvar($nametype='name',$dirtype='year',$rootdir='html')  
 {  
 $this->rootdir=$rootdir;  
 $this->dirtype=$dirtype;  
 $this->nametype=$nametype;  
 }  
 function createdir($dir='')  
 {  
 $this->dir=$dir?$dir:$this->dir;  
 if (!is_dir($this->dir))  
 {  
 $temp = explode('/',$this->dir);  
 $cur_dir = '';  
 for($i=0;$i<count($temp);$i++)  
 {  
 $cur_dir .= $temp[$i].'/';  
 if (!is_dir($cur_dir))  
 {  
 @mkdir($cur_dir,0777);  
 }  
 }  
 }  
 }  
 function getdir($dirname='',$time=0)  
 {  
 $this->time=$time?$time:$this->time;  
 $this->dirname=$dirname?$dirname:$this->dirname;  
 switch($this->dirtype)  
 {  
 case 'name':  
 if(empty($this->dirname))  
 $this->dir=$this->rootdir;  
 else  
 $this->dir=$this->rootdir.'/'.$this->dirname;  
 break;  
 case 'year':  
 $this->dir=$this->rootdir.'/'.date("Y",$this->time);  
 break;  
 case 'month':  
 $this->dir=$this->rootdir.'/'.date("Y-m",$this->time);  
 break;  
 case 'day':  
 $this->dir=$this->rootdir.'/'.date("Y-m-d",$this->time);  
 break;  
 }  
 $this->createdir();  
 return $this->dir;  
 }  
 function geturlname($url='')  
 {  
 $this->url=$url?$url:$this->url;  
 $filename=basename($this->url);  
 $filename=explode(".",$filename);  
 return $filename[0];  
 }  
 function geturlquery($url='')  
 {  
 $this->url=$url?$url:$this->url;  
 $durl=parse_url($this->url);  
 $durl=explode("&",$durl[query]);  
 foreach($durl as $surl)  
 {  
 $gurl=explode("=",$surl);  
 $eurl[]=$gurl[1];  
 }  
 return join("_",$eurl);  
 }  
 function getname($url='',$time=0,$dirname='')  
 {  
 $this->url=$url?$url:$this->url;  
 $this->dirname=$dirname?$dirname:$this->dirname;  
 $this->time=$time?$time:$this->time;  
 $this->getdir();  
 switch($this->nametype)  
 {  
 case 'name':  
 $filename=$this->geturlname().'.htm';  
 $this->name=$this->dir.'/'.$filename;  
 break;  
 case 'time':  
 $this->name=$this->dir.'/'.$this->time.'.htm';  
 break;  
 case 'query':  
 $this->name=$this->dir.'/'.$this->geturlquery().'.htm';  
 break;  
 case 'namequery':  
 $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->geturlquery().'.htm';  
 break;  
 case 'nametime':  
 $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->time.'.htm';  
 break;  
 }  
 return $this->name;  
 }  
 function createhtml($url='',$time=0,$dirname='',$htmlname='')  
 {  
 $this->url=$url?$url:$this->url;  
 $this->dirname=$dirname?$dirname:$this->dirname;  
 $this->time=$time?$time:$this->time;  
 //上面保证不重复地把变量赋予该类成员  
 if(empty($htmlname))  
 $this->getname();  
 else  
 $this->name=$dirname.'/'.$htmlname; //得到name  
 $content=file($this->url) or die("Failed to open the url ".$this->url." !");;  
///////////////关键步---用file读取$this->url  
  
 $content=join("",$content);  
 $fp=@fopen($this->name,"w") or die("Failed to open the file ".$this->name." !");  
 if(@fwrite($fp,$content))  
 return true;  
 else  
 return false;  
 fclose($fp);  
 }  
/////////////////以name为名字生成html  
 function deletehtml($url='',$time=0,$dirname='')  
 {  
 $this->url=$url?$url:$this->url;  
 $this->time=$time?$time:$this->time;  
 $this->getname();  
 if(@unlink($this->name))  
 return true;  
 else  
 return false;  
 }  
 /**  
 * function::deletedir()  
 * 删除目录  
 * @param $file 目录名(不带/)  
 * @return  
 */  
 function deletedir($file)  
 {  
 if(file_exists($file))  
 {  
 if(is_dir($file))  
 {  
 $handle =opendir($file);  
 while(false!==($filename=readdir($handle)))  
 {  
 if($filename!="."&&$filename!="..")  
 $this->deletedir($file."/".$filename);  
 }  
 closedir($handle);  
 rmdir($file);  
 return true;  
 }else{  
 unlink($file);  
 }  
 }  
 }  
}  
?>
PHP 相关文章推荐
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
php简单实现sql防注入的方法
Apr 22 PHP
php组合排序简单实现方法
Oct 15 PHP
PHP 获取指定地区的天气实例代码
Feb 08 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP静态类
Nov 25 #PHP
PHP文本操作类
Nov 25 #PHP
小偷PHP+Html+缓存
Nov 25 #PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 #PHP
如何使用PHP中的字符串函数
Nov 24 #PHP
PHP常用代码
Nov 23 #PHP
给初学PHP的5个入手程序
Nov 23 #PHP
You might like
精通php的十大要点(上)
2009/02/04 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
js文字横向滚动特效
2015/11/11 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
详解python tcp编程
2020/08/24 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
委托书范文
2014/04/02 职场文书
档案保密承诺书
2014/06/03 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android