现在的位置: 首页 > 综合 > 正文

一个生成静态页面的类[做了注释]

2014年02月24日 ⁄ 综合 ⁄ 共 4687字 ⁄ 字号 评论关闭
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);
            }
        }
    }

}
?>

抱歉!评论已关闭.