中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP動態頁生成靜態頁的方法有哪些

發布時間:2021-08-09 18:09:19 來源:億速云 閱讀:93 作者:chen 欄目:開發技術

這篇文章主要講解了“PHP動態頁生成靜態頁的方法有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP動態頁生成靜態頁的方法有哪些”吧!

生成靜態頁的頁面非常的簡單就是定義好模板與模板標題,之后利用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那么您這個文件中如果有使用引用文件比如require ('header.php'); 那么header.php中的內容將會顯示不出來。

方法三:str_replace()

復制代碼 代碼如下:

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


該方法適用于很簡單的頁面,如果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
{
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 ();
}
/*************獲取數據*******************/
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);
}
/********** 生成靜態頁面*****************/
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("https://www.jb51.net",1,"","cc",$fileid);


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

感謝各位的閱讀,以上就是“PHP動態頁生成靜態頁的方法有哪些”的內容了,經過本文的學習后,相信大家對PHP動態頁生成靜態頁的方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

平和县| 论坛| 平利县| 渭南市| 陕西省| 疏勒县| 咸阳市| 古丈县| 泉州市| 昌都县| 太康县| 南投县| 怀集县| 阿拉善右旗| 富平县| 蚌埠市| 绥阳县| 西乌珠穆沁旗| 台湾省| 师宗县| 呼伦贝尔市| 海丰县| 隆德县| 涞源县| 赣榆县| 开原市| 昔阳县| 兰溪市| 周宁县| 双鸭山市| 慈溪市| 林口县| 榆树市| 马龙县| 上蔡县| 扎兰屯市| 安新县| 喜德县| 周口市| 秦皇岛市| 普定县|