2023-12-03 分類: 網站建設
1、server會依據文件的后綴名去進行解析,假設是HTML文件則server不會進行語法解析。而是直接輸出到瀏覽器。 2、假設一個頁面中所有都是HTML代碼而沒有須要解析的pHp語法,則沒有必要保存為pHp文件,這樣反而會減少執行效率。3、假設是須要pHp控制HTML代碼的輸出,比方須要pHp推斷用戶是否登陸,假設登陸則輸出A,未登錄則輸出b。這就須要pHp來進行控制了。HTML不能實現這種功能
pHp生成靜態頁面教程,一些主要概念
一,pHp 腳本和動態頁面。
pHp 腳本是一個結束腳本程序,可以通過嵌入等方式與 HTML 文件混合。也可以歸類。功能包裝等形式。以模板的形式處理用戶請求。
無論如何,它的基本原理是這樣的。通過發出請求,請求某個頁面----->引入指定的對應腳本進行處理----->腳本被加載----->腳本被指定的pHp解析器解析形成HTML語言形式- --->解析后的HTML語句以包的形式發回瀏覽器。
不難看出,頁面發送到瀏覽器后,pHp 就不復存在了。已轉換并解析為 HTML 語句。客戶端請求是一個動態文件。事實上php代碼怎么放到html,那里不存在真正的文件。由pHp解析形成相應的頁面,然后發送回瀏覽器。
這種頁面處理方式稱為“動態頁面”。
兩個。靜態頁面。
靜態頁面是指只包含最后確實存在的HTML、JS、CSS等執行腳本的頁面。
它的處理方式是。按要求。請求頁面 ----> 確認并加載頁面 ----> 將頁面以包的形式傳回瀏覽器。
從這個過程,我們來對比一下動態頁面。你現在可以。動態頁面需要通過pHp解析器進行解析,通常需要連接數據庫進行數據庫訪問操作。然后就可以形成HTML語言信息包。靜態頁面不需要解析或連接數據庫直接發送,可以大大降低壓力,提高負載能力。顯著提供頁面打開速度和網站整體打開速度。但它的缺點是不能動態處理請求,而且文件必須實際存在于其上。
三個。模板和模板分析。模板尚未填充內容 html 文件。例如:
temp.html
代碼:
{ title } this is a { file } file's templets pHp處理: templetest.php Code: $title = "拓邁國際測試模板"; $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; ?>
模板解析處理是將pHp腳本解析處理后得到的結果填充()到模板中的過程。通常在模板類的幫助下。目前比較流行的模板解析類是。還有很多。模板分析處理的原則通常是替換。一些程序員習慣于將推理、循環和其他處理放入模板文件中。使用解析類來處理,典型的應用是一個概念,簡單來說就是一個循環處理。
pHp 腳本指定循環次數、如何循環替換等,然后模板解析類詳細實現這些操作。
好吧,我已經比較了靜態和動態頁面的優缺點。現在讓我們談談它。如何用pHp生成靜態文件。
pHp 生成靜態頁面,不代表 pHp 的動態分析和 HTML 頁面的輸出。它是指用 pHp 創建 HTML 頁面。
同時,由于HTML的不可寫性,如果我們創建的HTML發生變化,我們需要將其刪除并重新生成。 (當然你也可以選擇使用正則進行修改,但個人覺得還是刪掉重新生成比較好。有些得不償失。)
回到正題。用過pHp文件操作函數的pHp愛好者都知道。 pHp 中有一個文件操作函數。文件被打開。如果文件不存在,請嘗試創建。
這是pHp可以用來創建HTML文件的理論基礎。只有用來存放HTML文件的文件夾才有寫權限(即權限定義0777)。可以創建文件。(對于UNIX系統,Win系統不需要考慮。)以上面的例子為例,如果我們修改最后一句,指定在test文件夾下生成一個名為test.html的靜態文件:
代碼:
php $title = "拓邁國際測試模板"; $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"); //打開文件指針。創建文件 /* 檢查文件是否被創建且可寫 */ if (!is_writable ($filename)){ die ("文件:".$filename."不可寫。請檢查其屬性后重試。"); } if (!fwrite ($handle,$content)){ //將信息寫入文件 die ("生成文件".$filename."失敗!"); } fclose ($handle); //關閉指針 die ("創建文件".$filename."成功!
"); ?>
實際應用中常見問題解決方法參考: 1.文章列表問題:在數據庫中創建一個字段。記錄文件名,每次生成文件時將自己自動生成的文件名存入數據庫。對于推薦文章,只需指向指定靜態文件存放目錄下的頁面即可。使用pHp操作處理文章列表,保存為字符串,生成頁面時替換此字符串。
例如在頁面上放置文章列表的表格中添加標簽{},在pHp處理文件中:
代碼:
"); } if (!fwrite ($handle,$content)){ //將信息寫入文件 die ("生成文件".$filename."失敗!"); } fclose ($handle); //關閉指針 die ("創建文件".$filename."成功。"); ?>
其次,分頁問題。例如,當我們指定分頁時,每頁有 20 篇文章。某個子頻道的列表中的文章數已經被數據庫查詢到了45。但是。首先我們通過查詢得到如下參數: 1.總頁數; 2、每頁文章數。
第二步,for ($i = 0; $i
";把這句話去掉php代碼怎么放到html,放在循環后的顯示器上,因為這句話會停止程序運行。例:
代碼:
$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<$allpages; $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"); //打開文件指針。創建文件 /* 檢查文件是否被創建且可寫 */ if (!is_writable ($indexpath)){ echo "文件:".$indexpath."不可寫,請檢查其屬性后重試!
"; //改動為echo } if (!fwrite ($handle,$content)){ //將信息寫入文件 echo "生成文件".$indexpath."失敗!"; //改動為echo } fclose ($handle); //關閉指針 } fclose ($fp); die ("生成分頁文件完畢。如生成不全然,請檢查文件權限系統后又一次生成!
"); ?
>
總體思路是這樣的。其中,其他數據生成、數據輸入輸出檢查、頁面內容指向等可酌情添加到頁面中。
在實際文章系統處理過程中。還有很多問題需要考慮。與動態頁面不同,還有很多需要注意的地方。
但總體思路是一樣的。其他方面可以相互推論。
使用pHp制作靜態網站模板框架
模板可以改善網站的結構。
本文解釋了如何在 pHp 4 中傳遞一個新的特性和模板類。在一個由大量靜態 HTML 頁面組成的站點中,您可以巧妙地使用模板來控制頁面布局。
大綱:
==================================
獨立的功能和布局
避免重復的頁面元素
靜態網站的模板框架
==================================
單獨的功能和布局首先我們來看一下應用模板的兩個主要目的:
分離功能(pHp)和布局(HTML)以避免頁面元素重復
第一個目的是談論最多的目的。它設想了這樣一種情況,一群程序員編寫pHp腳本來生成頁面內容,同時還有一群設計者設計HTML和圖形來控制頁面。外部的。功能和布局分離的基本思路是讓這兩組人能夠編寫和使用一組獨立的文件:程序員只需要關心那些只包含pHp代碼的文件,不需要關心頁面外觀
。并且頁面設計者可以使用他們最熟悉的可視化編輯器來設計頁面布局。無需擔心破壞頁面中嵌入的任何 pHp 代碼。
假設你之前看過一些關于pHp模板的教程,那么你應該已經明確了模板的工作機制。考慮一個簡單的頁面部分:頁面頂部是頁眉。左邊是導航欄,其余是內容區。這樣的站點可以有如下模板文件:
模板演示樣例
{HEADER} | |
{LEFTNAV} | {CONTENT} |
福
條形
您可以看到頁面是如何從這些模板構建的:主模板控制整個頁面的布局。模板和模板控制頁面的公共元素。花括號“{}”內的標識符是內容占位符。使用模板最基本的好處是界面設計者可以根據自己的意愿編輯這些文件,比如設置字體、改變顏色和圖形,或者完全改變頁面的布局。
界面設計師可以使用任何普通的 HTML 編輯器或可視化工具編輯這些頁面。因為這些文件只包含 HTML 代碼。無論什么 pHp 代碼。
所有的 pHp 代碼都保存在一個單獨的文件中。這個文件就是頁面 URL 實際調用的文件。文件由pHp引擎解析,結果返回給瀏覽器。
一般。 pHp 代碼始終動態生成頁面內容,例如查詢數據庫或運行某些計算。下面是一個例子:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); // 此處的pHp代碼設置$content使其包括合適的頁面內容 $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); ?>
這里我們使用流行的模板類。但是對于許多其他模板類,基本思想是相同的。
首先實例化一個類,告訴它在哪里可以找到模板文件以及哪個模板文件對應于頁面的哪個部分。下一步是生成頁面內容。將結果分配給內容的標識符;然后,依次解析每個模板文件,模板類將執行必要的替換操作。最后將分析結果輸出到瀏覽器。
該文件完全由 pHp 代碼組成。不包含任何 HTML 代碼。這是它大的優勢。
如今,pHp 程序員可以專注于編寫生成頁面內容的代碼。您不必擔心如何生成 HTML 以正確設置最終頁面的格式。
您可以使用此方法和上述文件來構建一個完整的站點。假設 pHp 代碼根據 URL 中的查詢字符串生成頁面內容。例如。您可以相應地構建一個完整的雜志站點。
很容易看出使用模板還有第二個優勢。
如上例所示。頁面左側的導航欄單獨保存為文件。我們只需要編輯這個模板文件就可以改變網站所有頁面左側的導航欄。
避免重復的頁面元素
“這真是太好了”,您可能會想,“我的網站主要由大量靜態頁面組成。
現在我可以從所有頁面中刪除他們的公共部分。更新這些公共部分太麻煩了。
將來,我將能夠使用模板來創建非常易于維護的統一頁面布局。 “但事情并沒有那么簡單。”大量靜態頁面說明問題。
請考慮上面的例子。這個示例實際上只有一個 .php 頁面。之所以能生成整個站點的所有頁面,是因為它利用URL中的查詢字符串,從數據庫等信息源動態構建頁面。
我們大多數人運行的網站不一定有數據庫支持。
我們的網站大部分都是由靜態頁面組成的,然后我們使用pHp在這里和那里添加了一些動態功能,例如搜索引擎、反饋表單等。
那么,如何在這樣的網站上應用模板?
最簡單的方法是為每個頁面復制一個pHp文件,
然后將表示 pHp 代碼中內容的變量設置為每個頁面中相應的頁面內容。
比如有三個頁面,分別是首頁(home)、關于()和產品()。我們可以從三個文件中分別生成它們。這三個文件的內容都類似于:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav' => 'leftnav.htm' ) ); $content = "歡迎訪問
希望你可以喜歡本站點
"; $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); ?>
顯然。這種方式存在三個問題:我們要復制這些復雜的pHp代碼,涉及每個頁面的模板,這使得頁面像重復的公共頁面元素一樣難以維護;現在這些文件與 HTML 和 pHp 代碼混合在一起。給內容變量賦值會變得非常困難,因為我們要處理大量的特殊字符。
解決問題的關鍵是將pHp代碼和HTML內容分開,雖然我們無法從文件中刪除所有HTML內容。但它可以刪除大部分 pHp 代碼。
靜態網站模板框架
首先,我們像之前一樣為頁面的所有常用元素和頁面的整體布局編寫模板文件;然后刪除所有頁面的公共部分,只留下頁面內容。接下來,向每個頁面添加三行 pHp 代碼,如下所示:
php require('prepend.php'); ?>你好
歡迎訪問
希望你可以喜歡本站點
?>
這種方法基本上克服了上面提到的各種問題。今天文件中只有三行pHp代碼,沒有一行代碼直接引用模板。因此,修改這些代碼的可能性極小。另外,因為 HTML 內容在 pHp 標簽之外。因此,不存在處理特殊字符的問題。我們可以輕松地將這三行 pHp 代碼添加到所有靜態 HTML 頁面中。
該函數引入了一個 pHp 文件。此文件包含與模板相關的所有必要 pHp 代碼。
該函數設置模板對象和頁面標題。該函數解析模板并生成結果并發送給瀏覽器。
這是如何實現的?為什么在調用函數之前文件中的HTML沒有發送到瀏覽器?答案在于 pHp 4 的一個新特性,它同意將輸出到瀏覽器的內容攔截到緩沖區中。
我們來看看.php的詳細代碼:
define( array( 'main' => 'main.htm', 'header' => 'header.htm', 'leftnav'=> 'leftnav.htm' ) ); $tpl->assign('TITLE', $title); ob_start(); } function pageFinish() { GLObAL $tpl; $content = ob_get_contents(); ob_end_clean(); $tpl->assign('CONTENT', $content); $tpl->parse('HEADER', 'header'); $tpl->parse('LEFTNAV', 'leftnav'); $tpl->parse('MAIN', 'main'); $tpl->Fastprint('MAIN'); } ?>
該函數首先創建并設置一個模板實例。然后啟用輸出緩存。
在那之后。頁面本身的所有 HTML 內容都將進入緩存。該函數獲取緩存中的內容。然后在模板對象中指定這些內容。最后解析模板并輸出完成的頁面。
這就是整個模板框架的全部工作過程。
先寫一個模板,包含網站每個頁面的公共元素,然后把所有頁面的公共頁面布局代碼全部刪除,替換成三行永遠不需要修改的pHp代碼;然后添加類文件和 .php 以包含 path,這樣您就可以得到一個可以集中控制頁面布局的站點。它具有更好的可靠性和可維護性。并且站點級別的大規模修改變得非常容易。
本文下載包包含
一個可執行的演示站點,它的代碼凝視比以前的代碼凝視更具體。該類可以在。最新版本是1.1.0,還有一個小補丁用來保證這個類在pHp 4中正確執行。本文下載代碼中的類已經被這個補丁修正了。
pHp輕松生成靜態頁面
NEWS
標題 | 公布時間 |
">= $re["title"]? > |
= $re["datetime"]?> |
加入新聞 |
>
用pHp生成靜態網頁的兩個函數
近年來。萬維網(也稱為萬維網。WWW)正在不斷地改變著信息處理技術的面貌。網絡已成為高速的有效介質。并且適合人與企業之間的交流與協作。幾乎所有的信息技術領域都普遍受到WEb的影響。 Web 訪問帶來了許多其他用戶和許多其他數據。這意味著數據庫面臨很多其他壓力,最終用戶的響應速度越來越慢。與不斷增加 CpU、磁盤驅動器和內存以跟上這種增長的需求相比,靜態網頁應該更有用。更經濟的選擇。
靜態WEb動態網頁用pHp的詳細實現功能見()
function gen_static_file($program, $filename) { $program 1= "/usr/local/apache/htdocs/php/" . $program; $filename1 = "/usr/local/apache/htdocs/ static_html/" . $filename; $cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . $filename1 . " "; system($cmd_str); echo $filename . " generated.〈br〉"; }
這個函數是實現靜態的關鍵,即pHp動態頁面程序不是發送到瀏覽器,而是輸入到名為$的文件中(如2)所示。
這兩個參數中,$是pHp動態頁面程序,$是生成的靜態頁面的名稱(可以根據自己的需要制定自己的命名規則,這個很重要,見下文),/usr/ /php4/bin/php 是pHp中具有將程序輸入文件功能的部分。它是一個在 pHp 中運行外部命令的函數。我們還可以看到,所有生成動態頁面的php程序都需要放在/php/文件夾中,所有新生成的靜態頁面都會出現在//文件夾中(這些路徑可以根據具體需求設置)。
讓我們在下面給出一個詳細的例子。看看靜態的.php頁面是如何生成的。
function gen_college_static () { for ($i = 0; $i 〈= 32; $i++〉 { putenv("province_id=" . $i); //*.php文件從數據庫取數據時要用到。 $filename = " college_static". $i . ".html"; gen_static_file("college_static.php", $filename); }
從這個函數可以看出,通過調用函數(),.php是靜態的。變成了33個靜態頁面..html~..html,其中$會隨著$I的變化而變化。當然,也可以直接從數據庫中取值。為了控制生成的靜態頁面的數量和名稱,其他程序對生成的靜態頁面的調用應與靜態頁面的命名規則保持一致。
分享題目:pHp靜態頁面教程(模板及模板解析)(組圖)
網頁路徑:http://m.newbst.com/news34/298534.html
成都網站建設公司_創新互聯,為您提供Google、網站策劃、小程序開發、服務器托管、App開發、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容