生成静态页面的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取得一个类的属性和方法的实现代码
May 22 PHP
判断PHP数组是否为空的代码
Sep 08 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
常用PHP框架功能对照表
Oct 23 PHP
discuz目录文件资料汇总
Dec 30 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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自定义函数收代码
2010/08/01 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
微信自定义分享php代码分析
2016/11/24 PHP
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python实现SOM算法
2018/02/23 Python
python 输出上个月的月末日期实例
2018/04/11 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
python 自定义对象的打印方法
2019/01/12 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
keras实现多种分类网络的方式
2020/06/11 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
学校做一个有道德的人活动方案
2014/08/23 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js
Golang实现可重入锁的示例代码
2022/05/25 Golang