生成静态页面的PHP类

作者:无名 - PHP编程 -

代码如下:

<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; 
        } 
        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); 
            } 
        } 
    } 


>

IT人知识库 原文链接:http://www.itpeo.net/12740/370783.html





删除无限级目录与文件代码共享

<//删除目录//本程序由wm_chief原创,如要转载,请注明作者与来源(http://www.phome.ne... ...

PHP截取中文字符串的问题

以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双... ...

最令PHP初学者头痛的十四个问题

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从... ...

WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略

I finally got this to work, so... ...

PHP初学者头疼问题总结

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从... ...

php分页函数

<php /* 需求,建立一个test数据库,在里边建一个test表,里面就 只要id字段,输入一下数据就可以啦。... ...

从零开始 教你怎么搭建Discuz!4.1论坛(图)

随着网络的发展越来越多的网友开始学习建立自己的网站,通过网站将自己的资料提供给其他人,并且通过论坛与其他朋友讨论问题,发... ...

php正则

1  修饰符:好象没有讲 2  匹配模式好象有些少 比如<php $cp&... ...

使用Apache的rewrite技术

使用Apache的rewrite技术 做PHP项目中需要用到URL重定向技术,基本上的需求就是把比如 /user/he... ...

转换中文为unicode 转换unicode到正常文本

代码如下:'//转换中文为unicode function URLEncoding(vstrIn) &nbs... ...

玩转图像函数库—常见图形操作

我尽量不说大理论,诸如什么是png,自己查解决. PHP自4.3版本开始,捆绑了自己的GD2库,用户可以自己下载并设置.... ...

常用表单验证类,有了这个,一般的验证就都齐了。

代码如下:<php   /**    * 页面作用:... ...

解决控件遮挡问题:关于有窗口元素和无窗口元素

不知道朋友们有没有碰到过控件的遮挡问题,最典型的就是DropdownList和ActiveX的遮挡,HTML的z-ind... ...

js下函数般调用正则的方法附代码

曾经 ECMAScript 4 建议指出这个功能将会增加到 ES4 规... ...

rfedfre

jQuery EasyUI API 中文文档 - DateBox日期框

扩展自 $.fn.combo.defaults。用 $.fn.datebox.defaults 重写了 defaults... ...

mac下安装nginx和php

一、前话:1.1、环境选择:重新在mac上配置php,原本mac上就自带有apach、php以及pgsql,如果图简单的... ...

JavaScript与HTML结合的基本使用方法整理

JavaScript:写入 HTML 输出 实例 document.write("<h1>This i... ...

PHP 闭包详解及实例代码

闭包和匿名函数在PHP5.3.0中引入的。 闭包是指:创建时封装周围状态的函数。即使闭包所处的环境不存在了,闭包中封装... ...

微信 getAccessToken方法详解及实例

memcache缓存存储用户信息7000秒 <?php function getAccessToken... ...