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

  •   2009-07-31/22:44
  • 一般我们用PHP输出一个html文件,总是用$head="<head>……</head>"这样一个长串来完成。本类主要提供一个简便的用PHP输出html文件的方法。避免了在程序中出现过多的带有长字串。

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

    <?php
    //-------------------
    //TCreateHTML
    //根据模板文件生成一个静态html文件的类
    //作者:sharetop
    // email:ycshowtop@21cn.com
    //-------------------
    //*****定义所需工作函数
    //约定以标记 <!--##name##-->为开始
    //以标记<@@-->为结束
    function isbegin($str){
    $pattern="<!--##[a-zA-Z]+##-->";
    if(ereg($pattern,$str)) return true;
    return false;
    }
    function isfinish($str){
    $pattern="<]+@@-->";
    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-->注意!!本句单独一行
    ………
    <@@-->注意!!本句单独一行

    <?
    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();
    ?>


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多