现在的位置: 首页 > 综合 > 正文

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

2013年11月02日 ⁄ 综合 ⁄ 共 2006字 ⁄ 字号 评论关闭
根据模板文件生成一个静态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();

?>

抱歉!评论已关闭.