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