PHP動態頁生成靜態頁的3種常用方法

2022-10-03 16:03:18 字數 2737 閱讀 2169

生成靜態頁的頁面非常的簡單就是定義好模板與模板標題,之後利用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 ...