生成静态页面的PHP类

所属分类: 网络编程 / PHP编程 阅读数: 1221
收藏 0 赞 0 分享

复制代码 代码如下:
<?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); 
            } 
        } 
    } 


?>

更多精彩内容其他人还在看

CI框架实现创建自定义类库的方法

这篇文章主要介绍了CI框架实现创建自定义类库的方法,结合实例形式分析了CI框架创建自定义类库的相关原理、步骤、实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Yii2.0 RESTful API 基础配置教程详解

这篇文章主要介绍了Yii2.0 RESTful API 基础配置教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

CI框架附属类用法分析

这篇文章主要介绍了CI框架附属类用法,结合实例形式分析了CI框架附属类相关资源访问操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

CI框架网页缓存简单用法分析

这篇文章主要介绍了CI框架网页缓存简单用法,结合实例形式分析了CI框架网页缓存的原理,以及开启缓存、删除缓存等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

php实现的PDO异常处理操作分析

这篇文章主要介绍了php实现的PDO异常处理操作,结合实例形式分析了pdo异常处理的相关原理、用法及操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

php PDO属性设置与操作方法分析

这篇文章主要介绍了php PDO属性设置与操作方法,结合实例形式分析了php pdo常见属性功能及相关的设置、获取操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP抽象类基本用法示例

这篇文章主要介绍了PHP抽象类基本用法,结合实例形式分析了php抽象类的概念、原理、定义、使用方法及相关操作注意事项,代码注释包含较为详尽的说明信息,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP面向对象程序设计继承用法简单示例

这篇文章主要介绍了PHP面向对象程序设计继承用法,结合具体实例形式分析了php面向对象程序设计中继承的相关概念、原理、使用技巧与相关操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP实现函数内修改外部变量值的方法示例

这篇文章主要介绍了PHP实现函数内修改外部变量值的方法,涉及php全局变量、传值调用、引用等相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP命名空间简单用法示例

这篇文章主要介绍了PHP命名空间简单用法,结合具体实例形式分析了php命名空间的简单定义与使用相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多