|
前几天说要做一个PHP的生成静态页面的类 后来搜索下资料发现 已经有前辈总结过了 这里就偷懒下 借鉴他了!
下面就是! 写的不错 借鉴下这个是类的代码
:
class makeStaticHtml{//=================================// 定义变量 此处可更改//=================================var $saveDir = "web_articles" ; //保存静态页面的文件夹var $saveBegin = "art" ; // 生成静态页面以什么字符开头,本处为art_如:art_1200.htmlvar $saveTemplate = "tpl.html" ; //静态页面模板var $saveFlag = "a" ; //生成文件路径格式a为:web_articles/2008/09/10/art_130.html,b为web_articles/20080910/art_130.htmlvar $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.htmlif("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.htmlif("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号为813751echo "生成成功,文件名称为 : ".$temp_url."<br/><br/>";//==================// 文件是否存在 参数:年,月,日,文章ID号// 格式:年(0000),月(00),日(00)// 不存在返回no,存在返回路径//==================$ifHave = $mk->chkHtmlPage("2008","09","25",8137510);//模拟文章ID号为813751echo "文件是否存在:".$ifHave."<br/><br/>";//==================// 删除静态页面 参数:年,月,日,文章ID号// 格式:年(0000),月(00),日(00)// 返回结果:// del_error:删除失败// del_ok :删除成功// no_found :没找到//==================$delR = $mk->delHtml("2008","09","25",8137510);//模拟文章ID号为813751echo "删除指定页面结果:".$delR."<br/><br/>";?>
其中的原理是相同的 。 |
|