來這裡直接用構造函數來實現的,考慮到會有很多的生成靜態頁的進程,還是改為函數調用,本處保留備用,在類中template()替換成templateHtml()即可實現,
來這裡直接用構造函數來實現的,考慮到會有很多的生成靜態頁的進程,還是改為函數調用,本處保留備用,在類中template()替換成templatehtml()即可實現,
*/
class template
{
var $temp; //讀取的模板頁文件名(包含路徑)
var $html; //要生成的html文件名(包含路徑)
var $err; //錯誤編號
var $test; //數據流
var $arr; //要替換的數組 模式(鍵名->模板標簽 , 鍵值->替換內容)function template()
{
$this->temp="";
$this->html="";
$this->err=0;
$this->test="";
}function templatehtml($temp,$html,$arr)
{
$err=$this->chkfile($temp);
if((int)$err==0)
{
$fp=fopen($temp,"r"); //只讀方式打開模板頁
$test=fread($fp,filesize($temp)); //讀取模板頁的數據流
$test=$this->arr_replace($arr,$test); //替換文件
$err=$this->writefile($html,$test); //生成靜態頁
}
echo "由模板頁 ".$temp." 生成 ".$html.$this->error($err);
return;
}/*
*判斷文件是否存在
*返回錯誤提示
*/function chkfile($file)
{
if (file_exists($file))
{
return 0;
}
return 1;
}
/*
*根據數組文件內容,替換數據流 模式(鍵名->模板標簽 , 鍵值->替換內容)
*返回數據流
*參數$arr:數組
*參數$test :數據流
*/
function arr_replace($arr,$test)
{
$ss=$test;
foreach ($arr as $key => $value)
{
$ss= str_replace($key,$value,$ss);
}
return $ss;
}
/*
*將數據流,寫入到文件中
*返回執行狀態
*參數$html:要生成的html文件
*參數$test :數據流
*/
function writefile($html,$test)
{
$stat=2;
if($this->chkfile($html)==0) //判斷文件是否存在
{
$stat=0; //已經存在返回0
}
if($f=fopen($html,"w")) //寫入方式打開文件,不存在則創建
{
fputs($f,$test);
fclose($f);
$stat=0; //寫入成功返回0
}
else
{
$stat=2; //寫入失敗返回2
}
return $stat;
}
/*
*錯誤提示
*返回錯誤提示
*參數$err:錯誤編號
*參數$file :錯誤文件
*/
function error($err)
{
$message="";
switch((int)$err)
{
case 0 :
$message=" 靜態頁生成成功";
break;
case 1 :
$message=" 模板頁打開失敗,請檢查是否存在";
break;
case 2 :
$message=" 文件生成失敗,請檢查目錄權限";
break;
default:
$message=" 未知錯誤";
}
return $message;
}
/*
*
*主要用來讀取模板頁,返回數據流 (比如top,foot公用文件,)
*參數$file :模板頁路徑
*/
function readhtml($file)
{
$test="";
$err=$this->chkfile($file);
if($err==0)
{
$fp=fopen($file,"r"); //只讀方式打開模板頁
$test=fread($fp,filesize($file)); //讀取模板頁的數據流
}
else
{
$test=$file.$this->error($err);
}
return $test;}
/*
*
*主要用來刪除已生成的文件,不返回
*參數$file :文件路徑
*/function delete_file($file)
{
if (file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
if(file_exists($file))
{
$filesys = eregi_replace("/","",$file);
$delete = system("del $filesys");
clearstatcache();
if(file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
$delete = system("del $filesys");
}
}
clearstatcache();
}
}
}/*
調用方法demo.html的代碼
<html>
<head><title>{title}</title></head>
<body>{text}</body>
<html>
$sc=new template();
//$sc=new template($tmp,$filename,$arr); ()$tmp="../template/temp.php教程"; //模板頁
$filename="test.html"; //生成頁
$foot="../foot.html"; //包含的底文件,頭文件同理$arr=array();
$arr["{title}"]="新標題";
$arr["{text}"]="新內容";
$arr["{foot}"]=$sc->readhtml($foot);
$sc->templatehtml($tmp,$filename,$arr);