欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP動(dòng)態(tài)頁生成靜態(tài)頁的3種常用方法

 更新時(shí)間:2014年11月13日 09:26:08   投稿:shichen2014  
這篇文章主要介紹了PHP動(dòng)態(tài)頁生成靜態(tài)頁的3種常用方法,通過三種不同的方法從不同的角度實(shí)現(xiàn)這一功能,有很好的參考借鑒價(jià)值,需要的朋友可以參考下

生成靜態(tài)頁的頁面非常的簡(jiǎn)單就是定義好模板與模板標(biāo)題,之后利用str_replace進(jìn)行替換了,是最常用的方法,另一種是利用ob_get_contents輸出獲得然后生成html,還有一種不怎么推薦的是使用file_get_contents直接執(zhí)行訪問遠(yuǎn)程文件然后進(jìn)行保存,性能極差。

具體方法簡(jiǎn)單說明如下:
1.使用文件函數(shù)得到靜態(tài)頁面的模板字符串,然后用str_replace函數(shù)將需要替換的東西替換了再寫入到新的文件中。
2. 利用PHP的輸出控制函數(shù)(Output Control)得到靜態(tài)頁面字符串,再寫入到新的文件中。

復(fù)制代碼 代碼如下:
$filemodel="template/it.php";           //模板地址
$file=fopen($filemodel,"rb");           //打開模板,得到文件指針
$temp=fread($file,filesize($filemodel));    //得到模板文件html代碼

方法一:ob_get_contents()

這是一種很方便的方法,也是很常用的方法,實(shí)現(xiàn)原理是:首先打開緩存,然后創(chuàng)建相應(yīng)的靜態(tài)頁文件,寫入緩存的內(nèi)容,清空緩存。
示例:

復(fù)制代碼 代碼如下:
ob_strart();//打開緩沖區(qū)
$fn=date('ymdhis').rand(1000,9999).'html';//生成文件名
require("supply.php");//載入要生成靜態(tài)頁的文件,因?yàn)楹笈_(tái)有ob_clean()所以在不會(huì)顯示出來
$fs=fopen($fn,'w');//打開靜態(tài)頁文件
fwrite($fs,ob_get_contents());//生成靜態(tài)文件
ob_clean();//清空緩存

方法二:file_get_contents();

復(fù)制代碼 代碼如下:
$fn=date('ymdhis').rand(1000,9999).'html';
$url= 'http://'.$_SERVER['HTTP_HOST']."/";//注意
$content=file_get_contents($url);
$fs=fopen($fn,'w');
fwrite($fs,$content);

下面對(duì)上面的注意進(jìn)行一下解釋,如果在些你使用的是僅僅是文件名,而不是URL那么您這個(gè)文件中如果有使用引用文件比如require ('header.php'); 那么header.php中的內(nèi)容將會(huì)顯示不出來。

方法三:str_replace()

復(fù)制代碼 代碼如下:
$filemodel="supply.php"; 字串5$file=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);

該方法適用于很簡(jiǎn)單的頁面,如果supply.php中有使用引用文件比如require ('header.php');那么header.php中的內(nèi)容將會(huì)顯示不出來
在實(shí)際應(yīng)用中,您可以寫一個(gè)生成靜態(tài)頁的類,
復(fù)制代碼 代碼如下:
/*+++
|
| 使用方法
|   $shtml = new Shtml($Url,$FileBag,$FolderName,$fileid)
|   $Url:       頁面 URL 地址
|   $FileBag:   文件夾標(biāo)記   1 為:指定文件夾 
|         2 為:默認(rèn)文件夾(時(shí)間(年月日))
|        $FolderRoot html文件存放路徑
|   $FolderName 指定文件夾的名稱 $FileBag為2時(shí) 可以寫為空("");
|   $fileid      靜態(tài)頁面名稱(后綴 默認(rèn)為 .html)
|    
|
|
/*++*/
class Shtml
{
var $message1="Error    1: You write class Shtml is Wrong !   The second parameter is 1 or 2 in   this class!.";
var $message2="Error    2: The file write    Error.";
function __construct ($Url,$FileBag,$FolderRoot,$FolderName,$fileid)
{
$this->Url   = $Url;
$this->FileBag   = $FileBag;
$this->FileRoot = $FolderRoot;
$this->FileName = $FolderName;
$this->fileid    = $fileid;
Shtml::useFolder ();
}
/*************獲取數(shù)據(jù)*******************/
public function loadcontent ($Folder)
{  
ob_start();
require_once $this->Url;
Shtml::writehtml ($Folder,ob_get_contents());
ob_clean();
}
/********** 指定文件夾*****************/
public function useFolder ()
{   
if($this->FileBag==1)
{
$Folder=$this->FileName;
}
else if($this->FileBag==2)
{
$Folder=date('Ymd',time());
}
else
{
exit($this->message1);
}
if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);}
Shtml::loadcontent ($Folder);
}
/********** 生成靜態(tài)頁面*****************/
public function writehtml ($Folder,$cache_value)
{  
$file   = fopen($this->FileRoot.$Folder.'/'.$this->fileid.'.html','w+');
fwrite($file,$cache_value);
fclose($file);
}
}
$fileid=2;
$shtml = new Shtml("http://www.dbjr.com.cn",1,"","cc",$fileid);

總結(jié), 這個(gè)生成html程序代碼沒有生成分頁了,如果文章很多它也只生成一篇文章,如果要改進(jìn)我們需要進(jìn)行比較大的改動(dòng)了,在此就不介紹了。感興趣的朋友可以動(dòng)手測(cè)試改進(jìn)一下,相信會(huì)有不小的收獲!

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • PHP MSSQL 存儲(chǔ)過程的方法

    PHP MSSQL 存儲(chǔ)過程的方法

    在PHP中調(diào)用MS SQL存儲(chǔ)過程的核心代碼
    2008-12-12
  • php輸出表格的實(shí)現(xiàn)代碼(修正版)

    php輸出表格的實(shí)現(xiàn)代碼(修正版)

    在php開發(fā)過程中,對(duì)于大量的數(shù)據(jù)考慮用表格輸出的時(shí)候可以用得到,但部分朋友可能不是很清楚原理所以這里為大家準(zhǔn)備了代碼。希望對(duì)學(xué)習(xí)php的朋友有所幫助。
    2010-12-12
  • PHP中間件模式的兩種實(shí)現(xiàn)方法詳解

    PHP中間件模式的兩種實(shí)現(xiàn)方法詳解

    在PHP中,中間件是一種常用的設(shè)計(jì)模式,用于處理請(qǐng)求和響應(yīng),這篇文章主要為大家詳細(xì)介紹了兩種中間件的實(shí)現(xiàn)方法,有需要的小伙伴可以參考一下
    2023-11-11
  • php中字符查找函數(shù)strpos、strrchr與strpbrk用法

    php中字符查找函數(shù)strpos、strrchr與strpbrk用法

    這篇文章主要介紹了php中字符查找函數(shù)strpos、strrchr與strpbrk用法,以實(shí)例形式較為詳細(xì)的分析了php中字符查找函數(shù)strpos、strrchr與strpbrk的具體用法及相關(guān)注意事項(xiàng),非常實(shí)用,需要的朋友可以參考下
    2014-11-11
  • PHP查詢附近的人及其距離的實(shí)現(xiàn)方法

    PHP查詢附近的人及其距離的實(shí)現(xiàn)方法

    這篇文章主要介紹了PHP查詢附近的人及其距離的實(shí)現(xiàn)方法,涉及php數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • php htmlentities和htmlspecialchars 的區(qū)別

    php htmlentities和htmlspecialchars 的區(qū)別

    很多人都以為htmlentities跟htmlspecialchars的功能是一樣的,都是格式化html代碼的,我以前也曾這么認(rèn)為,但是今天我發(fā)現(xiàn)并不是這樣的。
    2008-08-08
  • PHP echo,print,printf,sprintf函數(shù)之間的區(qū)別與用法詳解

    PHP echo,print,printf,sprintf函數(shù)之間的區(qū)別與用法詳解

    這篇文章主要是對(duì)PHP中echo,print,printf,sprintf函數(shù)之間的區(qū)別與用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • php正則匹配文章中的遠(yuǎn)程圖片地址并下載圖片至本地

    php正則匹配文章中的遠(yuǎn)程圖片地址并下載圖片至本地

    這篇文章主要介紹了php正則匹配文章中的遠(yuǎn)程圖片地址并下載圖片至本地的實(shí)現(xiàn)技巧,可實(shí)現(xiàn)采集并保存遠(yuǎn)程圖片的功能,是非常實(shí)用的技巧,感興趣的小伙伴可以參考一下
    2015-09-09
  • php中base_convert()進(jìn)制數(shù)字轉(zhuǎn)換函數(shù)實(shí)例

    php中base_convert()進(jìn)制數(shù)字轉(zhuǎn)換函數(shù)實(shí)例

    這篇文章主要介紹了php中base_convert()進(jìn)制數(shù)字轉(zhuǎn)換函數(shù),以實(shí)例形式演示了十進(jìn)制數(shù)與二進(jìn)制、八進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換方法,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php str_pad 函數(shù)使用詳解

    php str_pad 函數(shù)使用詳解

    今天一朋友問我str_pad()的使用方法.他說網(wǎng)上很多都是直接把手冊(cè)上的拿過來.于是我來寫詳細(xì)點(diǎn). str_pad()函數(shù)的作用是:用一個(gè)字符串填充另一個(gè)指定字符串到指定長(zhǎng)度。
    2009-01-01

最新評(píng)論