生成静态页面的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 相关文章推荐
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
php 购物车完整实现代码
Jun 05 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
php单例模式的简单实现方法
Jun 10 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
javascript jQuery插件练习
2008/12/24 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
调试Python程序代码的几种方法总结
2015/04/28 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
pandas 时间格式转换的实现
2019/07/06 Python
详解Python time库的使用
2019/10/10 Python
python实现超级马里奥
2020/03/18 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
俄语专业职业生涯规划
2014/02/26 职场文书
操行评语大全
2014/04/30 职场文书
厕所文明标语
2014/06/11 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
初中生毕业评语
2014/12/29 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers