生成靜態頁的頁面非常的簡單就是定義好模板與模板標題,之後利用str_replace進行替換了,是最常用的方法,另一種是利用ob_get_contents輸出獲得然後生成html,還有一種不怎麼推薦的是使用file_get_contents直接執行訪問遠端檔案然後進行儲存,效能極差。
具體方法簡單說明如下:
1.使用檔案函式得到靜態頁面的模板字串,然後用str_replace函式將需要替換的東西替換了再寫入到新的檔案中。
2. 利用php的輸出控制函式(output control)得到靜態頁面字串,再寫入到新的檔案中。
複製** **如下:
$filemodel="template/it.php"; //模板位址
$file=fopen($filemodel,"rb"); //開啟模板,得到檔案指標
$temp=fread($file,filesize($filemodel)); //得到模板檔案html**
方法一:ob_get_contents()
這是一種很方便的方法,也是很常用的方法,實現原理是:首先開啟快取,然後建立相應的靜態頁檔案,寫入快取的內容,清空快取。
示例:複製** **如下:
ob_strart();//開啟緩衝區
$fn=date('ymdhis').rand(1000,9999).'html';//生成檔名
require("supply.php");//載入要生成靜態頁的檔案,因為後台有ob_clean()所以在不會顯示出來
$fs=fopen($fn,'w');//開啟靜態頁檔案
fwrite($fs,ob_get_contents());//生成靜態檔案
ob_clean();//清空快取
方法二:file_get_contents();
複製** **如下:
$fn=date('ymdhis').rand(1000,9999).'html';
$url= 'http://'.$_server['http_host']."/";//注意
$content=file_get_contents($url);
$fs=fopen($fn,'w');
fwrite($fs,$content);
下面對上面的注意進行一下解釋,如果在些你使用的是僅僅是檔名,而不是url那麼您這個檔案中如果有使用引用檔案比www.cppcns.com如require ('header.php'); 那麼header.php中的內容將會顯示不出來。
方法三:str_replace()
複製** 程式設計客棧**如下:
$filemodel="supply.php"; 字串5$filjiszhmcwje=fopen($filemodel,"w+");
$temp=fread($file,filesize($filemodel));
$temp=str_replace("[title]",$title,$temp);
$temp=str_replace("[posttime]",$posttime,$temp);
$temp=str_replace("[content]",$content,$temp);
該方法適用於很簡單的頁面,如果supply.php中有使用引用檔案比如require ('header.php');那麼header.php中的內容將會顯示不出來
在實際應用中,您可以寫乙個生成靜態頁的類,
複製** **如下:
/*+++
|| 使用方法
| $shtml = new shtml(程式設計客棧$url,$filebag,$foldername,$fileid)
| $url: 頁面 url 位址
| $filebag: 資料夾標記 1 為:指定資料夾
| 2 為:預設資料夾(時間(年月日))
| $folderroot html檔案存放路徑
| $foldername 指定資料夾的名稱 $filebag為2時 可以寫為空("");
| $fileid 靜態頁面名稱(字尾 預設為 .html)
| ||
/*++*/
class shtml
/*************獲取資料*******************/
public function loadcontent ($folder)
/********** 指定資料夾*****************/
public function usefolder ()
else if($this->filebag==2)
else
if(!is_dir($this->fileroot.$folwww.cppcns.comder))
shtml::loadcontent ($folder);
}/********** 生成靜態頁面*****************/
public function writehtml ($folder,$cache_value)
}$fileid=2;
$shtml = new shtml("",1,"","cc",$fileid);
總結, 這個生成html程式**沒有生成分頁了,如果文章很多它也只生成一篇文章,如果要改進我們需要進行比較大的改動了,在此就不介紹了。感興趣的朋友可以動手測試改進一下,相信會有不小的收穫!
本文標題: php動態頁生成靜態頁的3種常用方法
本文位址:
php生成靜態頁
先建立一chtml資料庫 表名稱為bihtml create table bihtml id int 11 auto increment not null,szdtitle varchar 30 szdcontent text primary key id 在表中插入兩條記錄 insert into...
PHP生成靜態頁
最近作的乙個專案中用到了兩種用 php 生成靜態頁面的 方法 回想起當初自己還不知道如何生成靜態頁面的迷惘,以及看不懂高手寫的文章的痛苦,覺得自己有必要站出來為還不知道如何生成靜態頁的phper寫乙個通俗點文章,以幫助他們盡快掌握這個好東西。在我之前所見的文章中要不是用 堆砌空間就是用高手與高手交流...
PHP生成靜態頁
複製 如下 程式設計客棧 function makedir mudir 建立目錄 function writemod filemodname 先創子摸板檔案路徑 function writeweb content,web,modfile 更新各自的子摸板檔案 modfile是子摸板名字 nbs m ...