生成静态页面的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 相关文章推荐
介绍几个array库的新函数 php
Dec 29 PHP
用header 发送cookie的php代码
Mar 16 PHP
实用函数2
Nov 08 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 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/04/12 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
js模拟滚动条(横向竖向)
2013/02/22 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
Python 正则表达式的高级用法
2016/12/04 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
物业门卫岗位职责
2013/12/28 职场文书
开工仪式主持词
2014/03/20 职场文书
学校校庆演讲稿
2014/05/22 职场文书
趣味运动会广播稿
2014/09/13 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
小学中等生评语
2014/12/29 职场文书
死者家属慰问信
2015/03/24 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript