根据模板文件生成一个静态html文件的类

根据模板文件生成一个静态html文件的类
一般我们用PHP输出一个html文件,总是用$head="<head>……</head>"这样一个长串来完成。本类主要提供一个简便的用PHP输出html文件的方法。避免了在程序中出现过多的带有长字串。

类定义文件 createhtml.class.php 如下:

<?php


//*****定义所需工作函数

//约定以标记 <!--##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();

?>

你可能感兴趣的:(html,PHP,function,File,Class,FP)