生成静态页面的PHP类


Posted in PHP onJuly 15, 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;$itime=$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开发大型项目的一点经验
Oct 09 PHP
php数组总结篇(一)
Sep 30 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 PHP
PHP的5个安全措施小结
Jul 17 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
PHP中source #N问题的解决方法
Jan 27 PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
php中this关键字用法分析
Dec 07 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
删除无限级目录与文件代码共享
Jul 12 #PHP
PHP截取中文字符串的问题
Jul 12 #PHP
最令PHP初学者头痛的十四个问题
Jul 12 #PHP
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 #PHP
PHP初学者头疼问题总结
Jul 08 #PHP
php分页函数
Jul 08 #PHP
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 #PHP
You might like
PHP 数据库树的遍历方法
2009/02/06 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
学习Node.js模块机制
2016/10/17 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Python全局变量用法实例分析
2016/07/19 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Python Series从0开始索引的方法
2018/11/06 Python
深入理解Python 多线程
2020/06/16 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
南京市纪委监察局整改方案
2014/09/16 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis