成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? php生成靜態(tài)html頁面的方法(2種方法)
全站頭部文字 我要出現(xiàn)在這里
php生成靜態(tài)html頁面的方法(2種方法) 739 2023-12-10   

因?yàn)槊看斡脩酎c(diǎn)擊動(dòng)態(tài)鏈接的時(shí)候都會(huì)對服務(wù)器發(fā)送數(shù)據(jù)查詢的要求,對于一個(gè)訪問量可能達(dá)百萬千萬級別的網(wǎng)站來說 這無疑是服務(wù)器一個(gè)大大的負(fù)擔(dān),所以把動(dòng)態(tài)數(shù)據(jù)轉(zhuǎn)換成靜態(tài)html頁面就成了節(jié)省人力物力的首選。

因?yàn)榇饲皼]有相應(yīng)的經(jīng)驗(yàn) 剛開始的時(shí)候覺得這個(gè)技術(shù)很神秘,但在看了一些例子以后發(fā)現(xiàn)并不是那么復(fù)雜(不過網(wǎng)上的資料并不是特別詳細(xì)),經(jīng)過一個(gè)上午加中下午的試驗(yàn) 終于把該做的任務(wù)完成了 下面是一些心得和一個(gè)簡單的例子

希望大蝦們不要笑話我哈

一般來說 用php轉(zhuǎn)換輸出html頁面有兩種辦法 引用大蝦的文章如下:

第一種:利用模板。

目前PHP的模板可以說是很多了,有功能強(qiáng)大的smarty,還有簡單易用的smarttemplate等。它們每一種模板,都有一個(gè)獲取輸出內(nèi)容的函數(shù)。我們生成靜態(tài)頁面的方法,就是利用了這個(gè)函數(shù)。用這個(gè)方法的優(yōu)點(diǎn)是,代碼比較清晰,可讀性好。

這里我用smarty做例子,說明如何生成靜態(tài)頁:

<?php
require("smarty/Smarty.class.php");
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//這里的 fetch() 就是獲取輸出內(nèi)容的函數(shù),現(xiàn)在$content變量里面,就是要顯示的內(nèi)容了
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?> 

第二種方法:利用ob系列的函數(shù)。

這里用到的函數(shù)主要是 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是打開瀏覽器緩沖區(qū)的意思,打開緩沖后,所有來自PHP程序的非文件頭信息均不會(huì)發(fā)送,而是 保存在內(nèi)部緩沖區(qū),直到你使用了ob_end_flush().而這里最重要的一個(gè)函數(shù),就是ob_get_contents(),這個(gè)函數(shù)的作用是獲取 緩沖區(qū)的內(nèi)容,相當(dāng)于上面的那個(gè)fetch(),道理一樣的。

<?php
ob_start();
echo "Hello World!";
$content = ob_get_contents();//取得php頁面輸出的全部內(nèi)容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

我選用的第2種方法 也就是用ob系列的函數(shù)

我剛開始看這個(gè)的時(shí)候有點(diǎn)不太明白 后來才知道ob是output buffering的意思 也就是輸出緩存

當(dāng)你準(zhǔn)備輸出的時(shí)候 所有的數(shù)據(jù)都保存在ob里面 服務(wù)器解析完php以后 把所有要輸出到客戶端的html代碼都存放在ob里面 如果我們要輸出html靜態(tài)頁面 只要把緩存取出來寫入一個(gè)html頁面即可

所以原理其實(shí)是很簡單的

這里用到了幾個(gè)函數(shù) 由于我初學(xué)php 很多函數(shù)我還不了解 所以這里也說明一下 希望可以幫助大家

ob_start():開始“捕捉”緩存 也就是從這里開始 打開瀏覽器的緩存

ob_end_flush():關(guān)閉瀏覽器緩存

ob_get_content():讀取緩存內(nèi)容

fopen(”文件路徑”,”打開模式”)打開文件 這個(gè)函數(shù)的打開模式有好幾種 下面介紹幾種主要的模式:

“r” 只讀方式打開,將文件指針指向文件頭。

“r+” 讀寫方式打開,將文件指針指向文件頭。

“w” 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。

“w+” 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。

fwrite(”文件名稱”,”寫入內(nèi)容”) 寫入文件

fclose() 關(guān)閉文件

由于我要轉(zhuǎn)換的html文件非常多 可能有幾百個(gè) 所以這里不能靜態(tài)指定fopen的路徑 大家可以設(shè)置一個(gè)路徑變量 里面可以保存用戶傳來的id等信息 方便進(jìn)行html文件命名 下面是我結(jié)合上次php讀取xml數(shù)據(jù)的一個(gè)簡單例子

<?php
ob_start();//打開瀏覽器緩存
//下面是讀取xml數(shù)據(jù)
$parser = xml_parser_create(); //創(chuàng)建一個(gè)parser編輯器
xml_set_element_handler($parser, "startElement", "endElement");//設(shè)立標(biāo)簽觸發(fā)時(shí)的相應(yīng)函數(shù) 這里分別為startElement和endElenment
xml_set_character_data_handler($parser, "characterData");//設(shè)立數(shù)據(jù)讀取時(shí)的相應(yīng)函數(shù)
$xml_file="1.xml";//指定所要讀取的xml文件,可以是url
$filehandler = fopen($xml_file, "r");//打開文件
while ($data = fread($filehandler, 4096)) 
{
xml_parse($parser, $data, feof($filehandler));
}//每次取出4096個(gè)字節(jié)進(jìn)行處理
fclose($filehandler);
xml_parser_free($parser);//關(guān)閉和釋放parser解析器
$name=false;
$position=false;
function startElement($parser_instance, $element_name, $attrs) //起始標(biāo)簽事件的函數(shù)
{
global $name,$position;
if($element_name=="NAME")
{
$name=true;
$position=false;
echo "名字:";
}
if($element_name=="POSITION")
{$name=false;
$position=true;
echo "職位:";
}
}
function characterData($parser_instance, $xml_data) //讀取數(shù)據(jù)時(shí)的函數(shù)
{
global $name,$position;
if($position)
echo $xml_data."<br />";
if($name)
echo $xml_data."<br />";
}
function endElement($parser_instance, $element_name) //結(jié)束標(biāo)簽事件的函數(shù)
{
global $name,$position;
$name=false;
$position=false;
}
//xml數(shù)據(jù)讀取完畢
$htmlname=$id.".html";//$id可以自己定義 這里代表用戶傳來的id
$htmlpath="archives/".$htmlname; //設(shè)置路徑變量
$content = ob_get_contents();//取得php頁面輸出的全部內(nèi)容
$fp = fopen($htmlpath, "w");
fwrite($fp, $content);
fclose($fp);
?>

以上內(nèi)容就是給大家分享的php生成靜態(tài)html頁面的方法(2種方法),希望大家喜歡。



主站蜘蛛池模板: 国产成人亚洲综合a∨婷婷| 赵大勇| 李顺载| 婷婷sese| 直播浙江卫视| 语文选择性必修中册电子课本| 冥界警局| 姐妹头像| 自拍在线| 程门立雪文言文| 哗鬼住正隔篱| 漂亮孕妇肚子疼视频要生了| 实用咒语大全| 樊梅生| 张天爱惊艳写真照| 玉林电视台| 电影《stag》完整版| 749局什么时候上映| 圣洁四人行| 都市频道在线直播| 《西湖的绿》宗璞| 亚洲电影在线观看| gayvideos| 秀场视频高清完整版| 怎么剪福字简单方法视频| 抖音网页入口| 戚继光电影| 土壤动植物的乐园教学反思| 无涯:杜琪峰的电影世界 电影| gale harold| 香港之夜电视剧免费播放国语版| 孙东杓| 林赛斯特林| 《白蛇传说》| 同人视频| porn4k| 郭德纲7000字微博原文| 王李丹妮全部三级| 巴霍巴利王:开端 2015 帕拉巴斯| 我的兴趣爱好| 伤残等级1-10标准图|

!??!站長長期在線接!?。?/p>

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103