生成静态页面的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调用Oracle存储过程
Oct 09 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
PHP写杨辉三角实例代码
Jul 17 PHP
PHP header函数分析详解
Aug 06 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
php引用返回与取消引用的详解
Jun 08 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
php微信公众号开发之校园图书馆
Oct 20 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输出XML到页面的3种方法详解
2013/06/06 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP积分兑换接口实例
2015/02/09 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
jQuery实现多按钮单击变色
2014/11/27 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python检测生僻字的实现方法
2016/10/23 Python
Python构建网页爬虫原理分析
2017/12/19 Python
python实现百度语音识别api
2018/04/10 Python
python 输出所有大小写字母的方法
2019/01/02 Python
详解Python装饰器
2019/03/25 Python
Django框架自定义session处理操作示例
2019/05/27 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
python之array赋值技巧分享
2019/11/28 Python
python可以用哪些数据库
2020/06/22 Python
信息部岗位职责
2013/11/12 职场文书
学生爱国演讲稿
2014/01/14 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android