PHP生成静态页面的类

前几天说要做一个PHP的生成静态页面的类 后来搜索下资料发现 已经有前辈总结过了 这里就偷懒下 借鉴他了!

下面就是! 写的不错 借鉴下这个是类的代码

class makeStaticHtml { //================================= // 定义变量 此处可更改 //================================= var $saveDir = "web_articles" ; //保存静态页面的文件夹 var $saveBegin = "art" ; // 生成静态页面以什么字符开头,本处为art_如:art_1200.html var $saveTemplate = "tpl.html" ; //静态页面模板 var $saveFlag = "a" ; //生成文件路径格式a为:web_articles/2008/09/10/art_130.html,b为web_articles/20080910/art_130.html var $saveArray = array(0); //存储所需要的变量 //================================= // 文件夹是否存在,不存在建立 //================================= private function chkDir( $dirName = '' ) { if(!is_dir($dirName)) { @mkdir($dirName) ; } } //================================= // 按当前日期找到文件,如果没有创建 //================================= private function chkArticleDir() { $saveDir = $this->saveDir; $saveFlag = $this->saveFlag ; //主目录 $this->chkDir($saveDir) ; //===================== //格式一:web_articles/2008/09/10/art_130.html if("a" == $saveFlag) { //年文件夹 $this->chkDir($saveDir."/".date("Y") ) ; //月文件夹 $this->chkDir($saveDir."/".date("Y")."/".date("m") ) ; //日文件夹 $this->chkDir($saveDir."/".date("Y")."/".date("m")."/".date("d") ) ; //返回路径 return $saveDir."/".date("Y")."/".date("m")."/".date("d")."/" ; } //====================== // 格式二:web_articles/20080910/art_130.html if("b" == $saveFlag) { $this->chkDir($saveDir."/".date("Ymd") ) ; return $saveDir."/".date("Ymd")."/" ; } } //================================= // 读取模板文件 //================================= private function readTemplate() { $saveTemplate = $this->saveTemplate; //以只读方式读取模板文件 $fp = @fopen($saveTemplate,"r") ; //读取内容 $content = @fread($fp,filesize($saveTemplate)) ; //关闭 @fclose($fp); //返回读取数据 return $content; } //================================= // 添加模板参数变量 //================================= public function addParm($parmName = '',$parmValue = '' ) { if($parmName != "" && $parmValue != "") { //向数组添加数据 array_push($this->saveArray,array($parmName,$parmValue)) ; } } //================================= // 生成静态页面函数 //================================= public function makeHtml($artid = '') { //======================= //先得到模板的内容并替换 //======================= $content = $this->readTemplate(); //参数长度 $size = count($this->saveArray); //按数组长度计算,替换各参数及值 for($i=1;$i<$size;$i++) { $content = str_replace ("{".$this->saveArray[$i][0]."}",$this->saveArray[$i][1],$content) ; } //如果不存在 if("" == $content) return "no_template"; //======================= //创建文件 //======================= //文件名称 $htmlPageName = $this->chkArticleDir().$this->saveBegin."_".$artid.".html" ; //创建 $handle = @fopen($htmlPageName,"w") ; //不可写 if(!fwrite($handle,$content)) return "make_error" ; //关闭 @fclose($handle) ; //返回静态页面路径 return $htmlPageName; } //================================= // 指定年月日的文件是否存在 // 参数:年,月,日,文章ID // 年(0000),月(00),日(00) //================================= public function chkHtmlPage($y='',$m='',$d='',$artid = '') { //文件位置 $delPath = ""; //得到静态页面保存格式 $saveFlag = $this->saveFlag ; //如果是年月日文件分级格式 if("a" == $saveFlag) { $delPath = $this->saveDir."/".$y."/".$m."/".$d."/".$this->saveBegin."_".$artid.".html"; } //第二种格式 else if("b" == $saveFlag) { $delPath = $this->saveDir."/".$y.$m.$d."/".$this->saveBegin."_".$artid.".html"; } //文件不存在 if(!file_exists($delPath)) { return "no"; } //文件存在 else { return $delPath; } } //================================= // 删除指定ID的文章静态页面,删除不成功返回false // 删除页面时给出参数,年,月,日,文章ID // 如:delHtml("2008","09","25",100); //================================= public function delHtml($y='',$m='',$d='',$artid = '') { $chkResult = $this->chkHtmlPage($y,$m,$d,$artid); //如果文件存在 if("no" != $chkResult) { //删除文件 if(!@unlink($chkResult)) { //删除失败 return "del_error" ; } else { //删除成功 return "del_ok" ; } } //文件不存在 else { return "no_found"; } } }

下面是例子代码:

<?php //=================================== // php实现生成静态页面的类的应用 // 程序编写:程序人生 www.vc66.cn //=================================== include "./makeHtmlPage.class.php"; //================== // 类实例化 //================== $mk = new makeStaticHtml(); //================== //给出模板名及值 //================== $mk->addParm("title","这是网页标题"); $mk->addParm("art_title","这是文章标题") ; $mk->addParm("art_content","这是文章内容.") ; $mk->addParm("art_time","2008-09-25 14:12:16") ; //================== // 生成静态页面. // 参数:文章ID,写入数据库后的 // 返回结果 // no_template :模板不存在 // make_error :生成失败 //================== $temp_url = $mk->makeHtml(8137510);//模拟文章ID号为813751 echo "生成成功,文件名称为 : ".$temp_url."<br/><br/>"; //================== // 文件是否存在 参数:年,月,日,文章ID号 // 格式:年(0000),月(00),日(00) // 不存在返回no,存在返回路径 //================== $ifHave = $mk->chkHtmlPage("2008","09","25",8137510);//模拟文章ID号为813751 echo "文件是否存在:".$ifHave."<br/><br/>"; //================== // 删除静态页面 参数:年,月,日,文章ID号 // 格式:年(0000),月(00),日(00) // 返回结果: // del_error:删除失败 // del_ok :删除成功 // no_found :没找到 //================== $delR = $mk->delHtml("2008","09","25",8137510);//模拟文章ID号为813751 echo "删除指定页面结果:".$delR."<br/><br/>"; ?>

其中的原理是相同的 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值