国产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語句??蛻粽埱鬄橐粍討B(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)頁面不同之處,需注意的地方還有很多。但大致思路即是如此,其它方面可舉一反三而得。
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

?? ????
1747
16
Cakephp ????
1600
56
??? ????
1541
28
PHP ????
1400
31
???
HTML ??? PHP ??? ??? ?????? HTML ??? PHP ??? ??? ?????? Jun 22, 2025 am 01:00 AM

PHP ??? HTML ??? ???? ? ??? ??? ???? .php? ?? ??? ??? ???? ??? ???? ?? ?? ? ? ??? ??????. ?? ??? ???? PHP ??? ???? HTML? ?? ???? ?? ???? ??????. ?? ??? ???? PHP ? HTML? ?? ? ???? ??? ???? ?? ?? ??? ??? ? ????. ?? ???, ?? ?? ?? ?? ?? ? ?? ???? ?? ??? ??? ?? ?? ?? ? ?? ??????? ???????.

HTML ??? ??? ?????? ??????? HTML ??? ??? ?????? ??????? Jun 24, 2025 am 12:53 AM

HTML ??? ??? ???? ?? ??? ???? ???? ???? ??? ????????. 1. ???? ?? ??, ?? ? ?? ??? ???? ??? ????. 2. ??? CSS ? JavaScript? ?? ??? ???? ?? ???? ?? ??? ??? ??????. 3. ?? ?? ??? ????? ?? ??? ???? ?? ?? ?? ??? ??? ??? ?? ??? ??? ??????. 4. ?? ? GZIP ?? Brotli? ?? ?? ? ?? ??? ????? ?? ??? ??? ????. ??? ??? ??? ???? ?? ????? ??? ?? ???? ? ????.

HTML? ??? ??? ?? ??? ?????, ??? ?? ???? ?????? HTML? ??? ??? ?? ??? ?????, ??? ?? ???? ?????? Jun 24, 2025 am 12:54 AM

htmlhasevolvedsificentsiceScreationscreationTomeetThemandsofwebDevelopersandUsers

 ??? ???? ?? ? ??? ?? ?? ???? ??? ?????? ??? ???? ?? ? ??? ?? ?? ???? ??? ?????? Jun 25, 2025 am 12:57 AM

????? ??? ??, ??? ?? ?? ????? ??? ???? ??? ?? ??? ??? ??? ???? ? HTML5?? ???? ??? ?????. ??? ??? ????? ?? ?? ?? ? ? ????. ??? ??? ??; ??? ??? ?? ??? ? ??? ???? ??? ??? ????? ???????.

 ??? ???? ??????? ??? ???? ??????? Jun 24, 2025 am 12:57 AM

AdeclarationisaformalstatementsomethingStrue, ??, ??, Orrequired, orrule.ItplaySakeyRoleInprogrammingVariablesandFunctions, inlegalcontextsByporportingactsuderoath, andindailymakingintenti

tabindex ??? ???? ??? ? ??? ???? ????? ?????? tabindex ??? ???? ??? ? ??? ???? ????? ?????? Jun 24, 2025 am 12:56 AM

THETABINDATTRICTECONTROLSHOWELEMETSRECEIVEFOCUSVIATHETABKEY, THREEMAINVALUSS : TabinDEX = "0"AddSanElementTothenateralTaborder, tabindex = "-1"allinefogrammaticfocusonly, andtabindex = "N"(Positivenumber) setSacustabbing

?? ?? = '??'? ??? ?????? ?? ?? = '??'? ??? ?????? Jun 23, 2025 am 12:17 AM

InputType = "Range"? ???? ???? ???? ? ???? ???? ?? ?? ? ???? ?? ??? ? ????. 1. ?? ??, ?? ?? ???? ??? ??? ?? ?? ????? ?? ???? ??? ?? ?????. 2. ?? ???? ???, ?? ? ? ?? ??? ?? ???? ??, ?? ? ?? ??? ?????. 3.? ?? ??? ??? ????? ?? JavaScript? ?? ????? ?? ??? ? ????. 4. ?? ?? ???? ??? ? ??? ? ???? ??? ?????? ???? ?? ????.

???? ??? ???? ??  ?  ??? ??? ?????? ???? ??? ???? ?? ? ??? ??? ?????? Jun 24, 2025 am 12:45 AM

HTML?? ???? ??? ???? ?? ??? ?? ? ?????. 1. ?? ???? ??? ???? ???? ? ?? ??? ???? ????. ?? ?? : ??? ???? ?????. 2.? ? ??? ???? ???? ??? ???, ??? ??? ?? ? ??? ???? ????, ?? ????, ??? ? ??? ??? ??? ??? ???? ? ??????. 3. ???? ???? ?? ? ? ??? ?? ??? ???? ALT ??? ?? ? ? ??? ?? ??? ???? ?? ?? ??? ??? ?? ? ? ????.

See all articles