經(jīng)常操作網(wǎng)站后臺(tái)的人都知道急黎,現(xiàn)在大多數(shù)的網(wǎng)站系統(tǒng),如dedecms、phpcms勃教、帝國(guó)等知名內(nèi)容管理系統(tǒng)都提供生成靜態(tài)頁(yè)面的功能淤击,這不光有利于搜索引擎的抓取,而且還能有效降低服務(wù)器壓力故源,所以說(shuō)這是一個(gè)很流行污抬、實(shí)用的功能。
對(duì)于學(xué)習(xí)PHP绳军,將要從事WEB網(wǎng)站開發(fā)的朋友們來(lái)說(shuō)印机,了解這個(gè)功能是必不可少的,由此门驾,下面來(lái)分享一下PHP生成靜態(tài)頁(yè)面的原理耳贬。
一、思路分析
其實(shí)猎唁,實(shí)現(xiàn)靜態(tài)頁(yè)面生成功能的原理很簡(jiǎn)單咒劲,主要利用幾個(gè)常見的PHP文件操作函數(shù)對(duì)文件進(jìn)行操作,其思路流程如下:
二诫隅、功能實(shí)現(xiàn)
設(shè)置example.html為模板文件腐魂,然后按照此模板文件生成article-1.html~article-5.html,以此來(lái)做簡(jiǎn)單的演示逐纬,代碼如下:
<?php
//將數(shù)據(jù)存入二維數(shù)組
$con=array(array('文章標(biāo)題1','文章內(nèi)容1'),array('文章標(biāo)題2','文章內(nèi)容2'),array('文章標(biāo)題3','文章內(nèi)容3'),array('文章標(biāo)題4','文章內(nèi)容4'),array('文章標(biāo)題5','文章內(nèi)容5'));
foreach($con as $id=>$val){ //循環(huán)生成
$title=$val[0];
$content=$val[1];
$path="article-".($id+1).".html";
//替換example內(nèi)容蛔屹,并獲取內(nèi)容賦值給$str
$fp=fopen("example.html","r");
$str=fread($fp,filesize("example.html"));
$str=str_replace("{title}",$title,$str);
$str=str_replace("{content}",$content,$str);
fclose($fp);
//新建空白文件,將$str寫入
$handle=fopen($path,"w");
fwrite($handle,$str);
fclose($handle);
echo "生成".$path."<br/>";
}
?>
}
注解:
- fopen(文件名,打開方式)豁生,打開文件函數(shù)兔毒,若無(wú)文件,則創(chuàng)建甸箱。其返回值為資源型;
- fread(文件名,讀取字節(jié)數(shù))育叁,讀取文件內(nèi)容及對(duì)應(yīng)的字節(jié)數(shù);
- str_replace(規(guī)定要查找的值,替換被查找值的值,被搜索的字符串),替換函數(shù);
- fclose(文件名)芍殖,關(guān)閉文件豪嗽;
- fwrite(要寫入的打開文件,要寫入打開文件的字符串,要寫入的最大字節(jié)數(shù))。
三豌骏、最后
原理比較簡(jiǎn)單龟梦,作為php初學(xué)者,要把每個(gè)基礎(chǔ)知識(shí)扎實(shí)學(xué)好窃躲,堅(jiān)持每天擼碼计贰,形成條件反射,其次以工作需求為導(dǎo)向蒂窒,設(shè)定好階段性目標(biāo)躁倒,相信赎婚,你的PHP之路定會(huì)風(fēng)光無(wú)限,共勉樱溉!