国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP源碼 PHP生成靜態(tài)網(wǎng)頁的方法

PHP生成靜態(tài)網(wǎng)頁的方法

Jun 08, 2016 pm 05:33 PM
content html nbsp quot

<script>ec(2);</script>

PHP生成靜態(tài)網(wǎng)頁的方法
  看到很多朋友在各個地方發(fā)帖問PHP生成靜態(tài)文章系統(tǒng)的方法,以前曾做過這樣一個系統(tǒng),遂談些看法,以供各位參考。好了,我們先回顧一些基本的概念。
  一,PHP腳本與動態(tài)頁面。
  PHP腳本是一種服務(wù)器端腳本程序,可通過嵌入等方法與HTML文件混合,也可以類,函數(shù)封裝等形式,以模板的方式對用戶請求進(jìn)行處理。無論以何種方式,它的基本原理是這樣的。由客戶端提出請求,請求某一頁面 -----> WEB服務(wù)器引入指定相應(yīng)腳本進(jìn)行處理 -----> 腳本被載入服務(wù)器 -----> 由服務(wù)器指定的PHP解析器對腳本進(jìn)行解析形成HTML語言形式 ----> 將解析后的HTML語句以包的方式傳回給瀏覽器。由此不難看出,在頁面發(fā)送到瀏覽器后,PHP就不存在了,已被轉(zhuǎn)化解析為HTML語句。客戶請求為一動態(tài)文件,事實上并沒有真正的文件存在在那里,是PHP解析而成相對應(yīng)的頁面,然后發(fā)送回瀏覽器。這種頁面處理方式被稱為“動態(tài)頁面”。
  二,靜態(tài)頁面。
  靜態(tài)頁面是指在服務(wù)器端確實存在的僅含HTML以及JS,CSS等客戶端運行腳本的頁面。它的處理方式是。由客戶端提出請求,請求某一頁面 ----> WEB服務(wù)器確認(rèn)并載入某一頁面 ----> WEB服務(wù)器將該頁面以包的形式傳遞回瀏覽器。由這一過程,我們對比一下動態(tài)頁面,即可方現(xiàn)。動態(tài)頁面需由WEB服務(wù)器的PHP解析器進(jìn)行解析,而且通常還需連接數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)庫存取操作,然后才能形成HTML語言信息包;而靜態(tài)頁面,無須解析,無須連接數(shù)據(jù)庫,直接發(fā)送,可大大減輕服務(wù)器壓力,提高服務(wù)器負(fù)載能力,大幅提供頁面打開速度和網(wǎng)站整體打開速度。但其缺點是,不能動態(tài)地對請求進(jìn)行處理,服務(wù)器上必須確實存在該文件。
  三,模板及模板解析。
  模板即尚未填充內(nèi)容html文件。例如:
 temp.html



{?title?}

this?is?a?{?file?}?file's?templets


PHP處理:
 templetest.php

$title?=?"http://siyizhu.com測試模板";
$file?=?"TwoMax?Inter?test?templet,
author:Matrix@Two_Max";

 $fp?=?fopen?("temp.html","r");
$content?=?fread?($fp,filesize?("temp.html"));
$content?=?str_replace?("{?file?}",$file,$content);
$content?=?str_replace?("{?title?}",$title,$content);

echo?$content;
?>?
模板解析處理,即將經(jīng)PHP腳本解析處理后得出的結(jié)果填充(content)進(jìn)模板的處理過程。通常借助于模板類。目前較流行的模板解析類有phplib,smarty,fastsmarty等等。模板解析處理的原理通常為替換。也有些程序員習(xí)慣將判斷,循環(huán)等處理放進(jìn)模板文件中,用解析類處理,典型應(yīng)用為block概念,簡單來說即為一個循環(huán)處理。由PHP腳本指定循環(huán)次數(shù),如何循環(huán)代入等,再由模板解析類具體實施這些操作。
  好了,對比過靜態(tài)頁面與動態(tài)頁面各自的優(yōu)劣,現(xiàn)在我們就來說說,如何用PHP生成靜態(tài)文件。
  PHP生成靜態(tài)頁面并不是指PHP的動態(tài)解析,輸出HTML頁面,而是指用PHP創(chuàng)建HTML頁面。同時因為HTML的不可寫性,我們創(chuàng)建的HTML若有修改,則需刪掉重新生成即可。(當(dāng)然你也可以選擇用正則進(jìn)行修改,但個人認(rèn)為那樣做倒不如刪掉重新生成來得快捷,有些得不償失。)
  言歸正傳。用過PHP文件操作函數(shù)的PHP?FANS知道,PHP中有一個文件操作函數(shù)fopen,即打開文件。若文件不存在,則嘗試創(chuàng)建。這即是PHP可以用來創(chuàng)建HTML文件的理論基礎(chǔ)。只要用來存放HTML文件的文件夾有寫權(quán)限(即權(quán)限定義0777),即可創(chuàng)建文件。(針對UNIX系統(tǒng)而言,Win系統(tǒng)無須考慮。)仍以上例為例,若我們修改最后一句,并指定在test目錄下生成一個名為test.html的靜態(tài)文件:

$title?=?"http://siyizhu.com測試模板";
$file?=?"TwoMax?Inter?test?templet,
author:Matrix@Two_Max";
 $fp?=?fopen?("temp.html","r");
$content?=?fread?($fp,filesize?("temp.html"));
$content?=?str_replace?("{file}",$file,$content);
$content?=?str_replace?("{title}",$title,$content);
//?echo?$content;?
$filename?=?"test/test.html";
$handle?=?fopen?($filename,"w");?//打開文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫
*/
if?(!is_writable?($filename)){
die?("文件:".$filename."不可寫,請檢查其屬性后重試!");
}
if?(!fwrite?($handle,$content)){?//將信息寫入文件
die?("生成文件".$filename."失??!");
}?
fclose?($handle);?//關(guān)閉指針

die?("創(chuàng)建文件".$filename."成功!");
?>
實際應(yīng)用中常見問題解決方案參考:
  一,文章列表問題:  
  在數(shù)據(jù)庫中創(chuàng)建字段,記錄文件名,每生成一個文件,將自動生成的文件名存入數(shù)據(jù)庫,對于推薦文章,只需指向存放靜態(tài)文件的指定文件夾中的該頁面即可。利用PHP操作處理文章列表,存為字符串,生成頁面時替換此字符串即可。如,在頁面中放置文章列表的表格加入標(biāo)記{articletable},而在PHP處理文件中:

$title?=?"http://siyizhu.com測試模板";
$file?=?"TwoMax?Inter?test?templet,
author:Matrix@Two_Max";
$fp?=?fopen?("temp.html","r");
$content?=?fread?($fp,filesize?("temp.html"));
$content?=?str_replace?("{file}",$file,$content);
$content?=?str_replace?("{title}",$title,$content);?
//?生成列表開始
$list?=?'';
$sql?=?"select?id,title,filename?from?article";
$query?=?mysql_query?($sql);
while?($result?=?mysql_fetch_array?($query)){
$list?.=?''.$result['title'].'
';
}
$content?.=?str_replace?("{articletable}",$list,$content);?
//生成列表結(jié)束
//?echo?$content;?
$filename?=?"test/test.html";
$handle?=?fopen?($filename,"w");?//打開文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫
*/
if?(!is_writable?($filename)){
die?("文件:".$filename."不可寫,請檢查其屬性后重試!");
}
if?(!fwrite?($handle,$content)){?//將信息寫入文件
die?("生成文件".$filename."失??!");
}?
fclose?($handle);?//關(guān)閉指針?
die?("創(chuàng)建文件".$filename."成功!");
?>
二,分頁問題。
  如我們指定分頁時,每頁20篇。某子頻道列表內(nèi)文章經(jīng)數(shù)據(jù)庫查詢?yōu)?5條,則,首先我們通過查詢得到如下參數(shù):1,總頁數(shù);2,每頁篇數(shù)。第二步,for?($i?=?0;?$i?
$fp?=?fopen?("temp.html","r");
$content?=?fread?($fp,filesize?("temp.html"));
$onepage?=?'20';
$sql?=?"select?id?from?article?where?channel='$channelid'";
$query?=?mysql_query?($sql);
$num?=?mysql_num_rows?($query);
$allpages?=?ceil?($num?/?$onepage);
for?($i?=?0;$i if?($i?==?0){
$indexpath?=?"index.html";
}?else?{
$indexpath?=?"index_".$i."html";
}
$start?=?$i?*?$onepage;
$list?=?'';
$sql_for_page?=?"select?name,filename,title?from?article?where?channel='$channelid'?limit?$start,$onepage";
$query_for_page?=?mysql_query?($sql_for_page);
while?($result?=?$query_for_page){
$list?.=?''.$title.'
';
}
$content?=?str_replace?("{articletable}",$list,$content);
if?(is_file?($indexpath)){
@unlink?($indexpath);?//若文件已存在,則刪除
}
$handle?=?fopen?($indexpath,"w");?//打開文件指針,創(chuàng)建文件
/*
 ?檢查文件是否被創(chuàng)建且可寫
*/
if?(!is_writable?($indexpath)){
echo?"文件:".$indexpath."不可寫,請檢查其屬性后重試!";?//修改為echo
}
if?(!fwrite?($handle,$content)){?//將信息寫入文件
echo?"生成文件".$indexpath."失敗!";?//修改為echo
}?
fclose?($handle);?//關(guān)閉指針
}
fclose?($fp);
die?("生成分頁文件完成,如生成不完全,請檢查文件權(quán)限系統(tǒng)后重新生成!");
?>
大致思路如此,其中如其它數(shù)據(jù)生成,數(shù)據(jù)輸入輸出檢查,分頁內(nèi)容指向等可酌情在頁面中加入。
  在實際文章系統(tǒng)處理過程當(dāng)中,還有許多問題有待考慮,與動態(tài)頁面不同之處,需注意的地方還有很多。但大致思路即是如此,其它方面可舉一反三而得。
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何將PHP代碼嵌入HTML文件中? 如何將PHP代碼嵌入HTML文件中? Jun 22, 2025 am 01:00 AM

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴(kuò)展名,以便服務(wù)器能正確解析。使用標(biāo)準(zhǔn)的標(biāo)籤包裹PHP代碼,可在HTML中任意位置插入動態(tài)內(nèi)容。此外,可在同一文件中多次切換PHP與HTML,實現(xiàn)條件渲染等動態(tài)功能。務(wù)必注意服務(wù)器配置及語法正確性,避免因短標(biāo)籤、引號錯誤或遺漏結(jié)束標(biāo)籤導(dǎo)致問題。

如何最小化HTML文件的大??? 如何最小化HTML文件的大??? Jun 24, 2025 am 12:53 AM

要減小HTML文件大小需清理冗余代碼、壓縮內(nèi)容并優(yōu)化結(jié)構(gòu)。1.刪除未使用的標(biāo)簽、注釋和多余空白以減少體積;2.將內(nèi)聯(lián)CSS和JavaScript移至外部文件并合并多個腳本或樣式塊;3.在不影響解析的前提下簡化標(biāo)簽語法,如省略可選閉合標(biāo)簽或使用簡短屬性;4.清理后啟用Gzip或Brotli等服務(wù)器端壓縮技術(shù)進(jìn)一步縮減傳輸體積。這些步驟可在不犧牲功能的前提下顯著提升頁面加載性能。

隨著時間的流逝,HTML如何發(fā)展,其歷史上的關(guān)鍵里程碑是什麼? 隨著時間的流逝,HTML如何發(fā)展,其歷史上的關(guān)鍵里程碑是什麼? Jun 24, 2025 am 12:54 AM

htmlhasevolvedscreatscreationtomeetthegrowingdemandsofwebdevelopersandusers.inatelyallyasimplemarkuplanguageforsharingdocuments,ithasundergonemajorupdates,包括html.2.0,包括wheintrodistusefforms;

如何使用元素代表文檔或部分的頁腳? 如何使用元素代表文檔或部分的頁腳? Jun 25, 2025 am 12:57 AM

是HTML5中用於定義頁面或內(nèi)容區(qū)塊底部的語義化標(biāo)籤,通常包含版權(quán)信息、聯(lián)繫方式或?qū)Ш芥溄拥?;它可置於頁面底部或嵌套在、等?biāo)籤內(nèi)作為區(qū)塊尾部;使用時應(yīng)注意避免重複濫用及放入無關(guān)內(nèi)容。

聲明是什麼,它做什麼? 聲明是什麼,它做什麼? Jun 24, 2025 am 12:57 AM

Adeclarationisaformalstatementthatsomethingistrue,official,orrequired,usedtoclearlydefineorannounceanintent,fact,orrule.Itplaysakeyroleinprogrammingbydefiningvariablesandfunctions,inlegalcontextsbyreportingfactsunderoath,andindailylifebymakingintenti

如何使用Tabindex屬性來控制元素的選項卡順序? 如何使用Tabindex屬性來控制元素的選項卡順序? Jun 24, 2025 am 12:56 AM

ThetabindexattributecontrolshowelementsreceivefocusviatheTabkey,withthreemainvalues:tabindex="0"addsanelementtothenaturaltaborder,tabindex="-1"allowsprogrammaticfocusonly,andtabindex="n"(positivenumber)setsacustomtabbing

輸入類型='範(fàn)圍”的目的是什麼? 輸入類型='範(fàn)圍”的目的是什麼? Jun 23, 2025 am 12:17 AM

inputtype="range"用於創(chuàng)建滑塊控件,讓用戶從預(yù)定義範(fàn)圍內(nèi)選擇值。 1.主要適用於需要直觀選擇數(shù)值的場景,如調(diào)節(jié)音量、亮度或評分系統(tǒng);2.基本結(jié)構(gòu)包含min、max和step屬性,分別設(shè)定最小值、最大值和步長;3.可通過JavaScript獲取並實時使用該值,提升交互體驗;4.使用時建議顯示當(dāng)前值並註意可訪問性和瀏覽器兼容性問題。

如何使用和元素為圖像提供標(biāo)題? 如何使用和元素為圖像提供標(biāo)題? Jun 24, 2025 am 12:45 AM

在HTML中給圖片添加標(biāo)題的標(biāo)準(zhǔn)方式是使用和元素。 1.基本用法是將圖片包裹在標(biāo)籤內(nèi),並在其內(nèi)部使用添加標(biāo)題,例如:這是圖片的標(biāo)題;2.推薦使用這兩個標(biāo)籤的原因包括語義明確、樣式控制方便以及可訪問性強(qiáng),有助於瀏覽器、爬蟲和屏幕閱讀器理解內(nèi)容結(jié)構(gòu);3.注意事項包括可放在上下但需保持邏輯順序、不能替代alt屬性,且可包含多個媒體元素構(gòu)成一個整體單元。

See all articles