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

ホームページ php教程 PHP源碼 PHP生成靜態(tài)網(wǎng)頁(yè)的方法

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

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

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

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



{?title?}

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


PHP處理:
 templetest.php

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

$title?=?"http://siyizhu.com測(cè)試模板";
$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");?//打開(kāi)文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫(xiě)
*/
if?(!is_writable?($filename)){
die?("文件:".$filename."不可寫(xiě),請(qǐng)檢查其屬性后重試!");
}
if?(!fwrite?($handle,$content)){?//將信息寫(xiě)入文件
die?("生成文件".$filename."失?。?);
}?
fclose?($handle);?//關(guān)閉指針

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

$title?=?"http://siyizhu.com測(cè)試模板";
$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);?
//?生成列表開(kāi)始
$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");?//打開(kāi)文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫(xiě)
*/
if?(!is_writable?($filename)){
die?("文件:".$filename."不可寫(xiě),請(qǐng)檢查其屬性后重試!");
}
if?(!fwrite?($handle,$content)){?//將信息寫(xiě)入文件
die?("生成文件".$filename."失?。?);
}?
fclose?($handle);?//關(guān)閉指針?
die?("創(chuàng)建文件".$filename."成功!");
?>
二,分頁(yè)問(wèn)題。
  如我們指定分頁(yè)時(shí),每頁(yè)20篇。某子頻道列表內(nèi)文章經(jīng)數(shù)據(jù)庫(kù)查詢(xún)?yōu)?5條,則,首先我們通過(guò)查詢(xún)得到如下參數(shù):1,總頁(yè)數(shù);2,每頁(yè)篇數(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");?//打開(kāi)文件指針,創(chuàng)建文件
/*
 ?檢查文件是否被創(chuàng)建且可寫(xiě)
*/
if?(!is_writable?($indexpath)){
echo?"文件:".$indexpath."不可寫(xiě),請(qǐng)檢查其屬性后重試!";?//修改為echo
}
if?(!fwrite?($handle,$content)){?//將信息寫(xiě)入文件
echo?"生成文件".$indexpath."失??!";?//修改為echo
}?
fclose?($handle);?//關(guān)閉指針
}
fclose?($fp);
die?("生成分頁(yè)文件完成,如生成不完全,請(qǐng)檢查文件權(quán)限系統(tǒng)后重新生成!");
?>
大致思路如此,其中如其它數(shù)據(jù)生成,數(shù)據(jù)輸入輸出檢查,分頁(yè)內(nèi)容指向等可酌情在頁(yè)面中加入。
  在實(shí)際文章系統(tǒng)處理過(guò)程當(dāng)中,還有許多問(wèn)題有待考慮,與動(dòng)態(tài)頁(yè)面不同之處,需注意的地方還有很多。但大致思路即是如此,其它方面可舉一反三而得。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

PHPコードをHTMLファイルに埋め込むことができますが、ファイルに.phpの拡張機(jī)能があることを確認(rèn)して、サーバーが正しく解析できるようにします。標(biāo)準(zhǔn)タグを使用してPHPコードをラップし、HTMLのどこにでも動(dòng)的コンテンツを挿入します。さらに、同じファイルでPHPとHTMLを複數(shù)回切り替えて、條件付きレンダリングなどの動(dòng)的関數(shù)を?qū)g現(xiàn)できます。短いラベル、引用マークエラー、または省略されたエンドラベルによって引き起こされる問(wèn)題を回避するために、サーバーの構(gòu)成と構(gòu)文の正確性に注意してください。

HTMLファイルのサイズを最小限に抑えるにはどうすればよいですか? HTMLファイルのサイズを最小限に抑えるにはどうすればよいですか? Jun 24, 2025 am 12:53 AM

HTMLファイルのサイズを削減するには、冗長(zhǎng)コードをクリーンアップし、コンテンツを圧縮し、構(gòu)造を最適化する必要があります。 1.未使用のタグ、コメント、追加のブランクを削除して、ボリュームを減らします。 2.インラインCSSとJavaScriptを外部ファイルに移動(dòng)し、複數(shù)のスクリプトまたはスタイルブロックをマージします。 3.オプションの閉じたタグを省略したり、短い屬性を使用したりするなど、解析に影響を與えることなくラベルの構(gòu)文を簡(jiǎn)素化します。 4.クリーニング後、GZIPやBrotliなどのサーバー側(cè)の圧縮技術(shù)を有効にして、送信量をさらに減らします。これらの手順は、機(jī)能を犠牲にすることなく、ページの読み込みパフォーマンスを大幅に改善できます。

HTMLは時(shí)間とともにどのように進(jìn)化しましたか?また、その歴史の重要なマイルストーンは何ですか? HTMLは時(shí)間とともにどのように進(jìn)化しましたか?また、その歴史の重要なマイルストーンは何ですか? Jun 24, 2025 am 12:54 AM

htmlhasevolvedsificationificativitivationtiontumettomedsofwebdevelopersandusers.initiviallyasimallyasimplanguageforsharingdocuments、ithasundergonemajorupdates、ithasundergonemajorupdates、html3.x、html3.x、whithml3.x、html3.x、html3.x、html3.x、

要素を使用して、ドキュメントまたはセクションのフッターを表すにはどうすればよいですか? 要素を使用して、ドキュメントまたはセクションのフッターを表すにはどうすればよいですか? Jun 25, 2025 am 12:57 AM

これは、通常、著作権情報(bào)、連絡(luò)先情報(bào)、ナビゲーションリンクを含むページまたはコンテンツブロックの下部を定義するためにHTML5で使用されるセマンティックタグです。ページの下部に配置したり、ブロックの端としてタグを付けたりすることもできます。それを使用するときは、繰り返しの虐待や無(wú)関係なコンテンツを避けるために注意を払う必要があります。

宣言とは何ですか?それは何をしますか? 宣言とは何ですか?それは何をしますか? Jun 24, 2025 am 12:57 AM

adeclarationsaformalstatementementsomethingistrue、公式、orrequired、usedocleallylylinglineor anunceanintent、fact、orrule

tabindex屬性を使用して、要素のタブ順序を制御するにはどうすればよいですか? tabindex屬性を使用して、要素のタブ順序を制御するにはどうすればよいですか? Jun 24, 2025 am 12:56 AM

thetabindexattributecontrolshowelementsreceivefocusviathetabkey、withthreemainvalues:tabindex = "0" addsanelementtotheNaturalTaborder、tabindex = "-1"はposmationfocusonly、andtabindex = "n"(positivenumer)

入力型= '範(fàn)囲'の目的は何ですか? 入力型= '範(fàn)囲'の目的は何ですか? Jun 23, 2025 am 12:17 AM

inputType = "範(fàn)囲"は、スライダーコントロールを作成するために使用され、ユーザーが事前定義された範(fàn)囲から値を選択できるようにします。 1。これは、ボリューム、輝度、スコアリングシステムの調(diào)整など、値を直感的に選択する必要があるシーンに主に適しています。 2。基本構(gòu)造には、最小値、最大値、ステップサイズをそれぞれ設(shè)定するMin、Max、およびStep屬性が含まれます。 3.この値は、インタラクティブエクスペリエンスを改善するために、JavaScriptを介してリアルタイムで取得および使用できます。 4.現(xiàn)在の値を表示し、使用時(shí)にアクセシビリティとブラウザの互換性の問(wèn)題に注意を払うことをお?jiǎng)幛幛筏蓼埂?/p>

畫(huà)像のキャプションを提供するために、および要素を使用するにはどうすればよいですか? 畫(huà)像のキャプションを提供するために、および要素を使用するにはどうすればよいですか? Jun 24, 2025 am 12:45 AM

HTMLの畫(huà)像にタイトルを追加する標(biāo)準(zhǔn)的な方法は、使用と要素です。 1.基本的な使用法は、畫(huà)像をタグに包み、その中にタイトルを追加することです。たとえば、これは畫(huà)像のタイトルです。 2.これらの2つのタグを使用する理由には、クリアセマンティクス、便利なスタイルコントロール、強(qiáng)力なアクセシビリティが含まれます。これにより、ブラウザー、クローラー、スクリーンリーダーがコンテンツ構(gòu)造を理解するのに役立ちます。 3。注記は、上下に配置できるが、論理的な順序を維持し、ALT屬性を置き換えることができず、ユニット全體を形成するために複數(shù)のメディア要素を含めることができることを含む。

See all articles