一般我们用PHP输出一个html文件,总是用$head='<head>……</head>'这样一个长串来完成。本类主要提供一个简便的用PHP输出html文件的方法。避免了在程序中出现过多的带有长字串。
类定义文件 createhtml.class.php 如下:
<?php//-------------------// TCreateHTML//根据模板文件生成一个静态html文件的类// 作者:sharetop// email:ycshowtop@21cn.com//-------------------//*****定义所需工作函数//约定以标记 <!--##name##-->为开始//以标记<!--@@name@@-->为结束function isbegin($str){$pattern='<!--##[a-zA-Z]+##-->';if(ereg($pattern,$str)) return true;return false;}function isfinish($str){$pattern='<!--@@[a-zA-Z]+@@-->';if(ereg($pattern,$str)) return true;return false;}function getname($str){$tmp=explode('##',$str);return $tmp[1];}//******************//*******定义类class TCreateHTML {var $HTemplate;var $FileName;var $ModiString;//********接口函数//构造模板function TCreateHTML($tmplate){$this->HTemplate=$tmplate;}//设置输出文件名function SetHTML($filename){$this->FileName=$filename;}//设置标记的名字与相应取代的字串function EditableBlock($name,$replace){$this->ModiString[$name]=$replace;}//写HTML文件function WriteHtml(){$fc=file($this->HTemplate);$fp=fopen($this->FileName,'w');$k=count($fc);$begin=false;$first=false;$tag='';for($i=0;$i<$k;$i++){if(isbegin($fc[$i])){fputs($fp,$fc[$i]);$begin=true;$first=true;$tag=getname($fc[$i]);continue;}if(isfinish($fc[$i])){fputs($fp,$fc[$i]);$begin=false;$first=false;$tag='';continue;}if($begin==true){if($first==true) {$fc[$i]=$this->ModiString[$tag].' ';$first=false;}else $fc[$i]='';}fputs($fp,$fc[$i]);}fclose($fp);}//--------class end}?>
例子如下:
(
先作一个html格式文件,在想替换的地方加上标记
<!--aaa--> 注意!!本句单独一行………<!--@@aaa@@--> 注意!!本句单独一行等)
<?require 'createhtml.class.php';$chtml=new TCreateHTML('template.htm');$chtml->SetHTML('news.htm');$chtml->EditableBlock('aaa','11aa111aa');$chtml->EditableBlock('bbb','11bbb122bb');$chtml->EditableBlock('ccc','11cc333cc');$chtml->WriteHtml();?>