首頁 後端開發 php教程 用php產生靜態html頁面通用2種方法

用php產生靜態html頁面通用2種方法

Jul 29, 2016 am 09:15 AM
html nbsp parser position

因為每次用戶點擊動態連結的時候都會對伺服器發送資料查詢的要求

對於一個訪問量可能達百萬千萬級別的網站來說這無疑是伺服器一個大大的負擔

所以把動態資料轉換成靜態html頁面就成了節省人力物力的首選

因為此前沒有相應的經驗剛開始的時候覺得這個技術很神秘

但在看了一些例子以後發現並不是那麼複雜(不過網上的資料並不是那麼特別詳細)

經過一個上午加中下午的試驗終於把該做的任務完成了下面是一些心得和一個簡單的例子

希望大蝦們不要笑話

一般來說用php轉換輸出html頁面有兩種辦法引用大蝦的文章如下:

第一種:利用模板。目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smarttemplate等。它們每一種模板,都有一個獲取輸出內容的函數。我們產生靜態頁面的方法,就是利用了這個函數。用這個方法的優點是,程式碼比較清晰,可讀性好。

這裡我用smarty做例子,說明如何產生靜態頁:

  1. require("smarty/Smarty.class.php");
  2. $t = new Smarty-a
  3. >assign("title","Hello World!");
  4. $content = $t->fetch("templates/index.htm");
  5. //這裡的fetch() 就是取得輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
  6. $fp = fopen("archives/2005/05/19/0001.html", "w");
  7. fwrite($fp, $content);
  8. fclose($fp);
  9. ?>
第二種方法:利用ob系列的函數。這裡用到的函數主要是ob_start(), ob_end_flush(), ob_get_content(),其中ob_start()是開啟瀏覽器緩衝區的意思,開啟緩衝後,所有來自PHP程式的非檔案頭資訊不會傳送,而是保存在內緩衝區,直到你使用了ob_end_flush().而這裡最重要的一個函數,就是ob_get_contents(),這個函數的作用是獲取緩衝區的內容,相當於上面的那個fetch(),道理一樣的。

    ob_start();
  1. echo "Hello World!";
  2. $content = ob_get_contents();//取得php頁面輸出的全部內容
  3. $content = ob_get_contents();//獲取2005/05/19/0001.html", "w");
  4. fwrite($fp, $content);
  5. fclose($fp);
  6. ?>
  7. 我選用的第一個方法也選用的第一個方法也選用就是用ob系列的函數

我剛開始看這個的時候有點不太明白後來才知道ob是output buffering的意思也就是輸出快取

當你準備輸出的時候所有的資料都保存在ob裡面伺服器解析完php以後把所有要輸出到客戶端的html程式碼都存放在ob裡面如果我們要輸出html靜態頁面只要把快取取出來寫入一個html頁面即可

所以原理其實是很簡單的

這裡用到了幾個函數由於我初學php 很多函數我還不了解所以這裡也說明一下希望可以幫助大家

ob_start():開始「捕捉」快取也就是從這裡開始開啟瀏覽器的快取

ob_end_flush():關閉瀏覽器快取

ob_g​​et_content():讀取快取內容

fopen(」檔案路徑」,」開啟模式」)開啟檔案這個函數的開啟模式有好幾種下面介紹幾種主要的模式:

「 r” 只讀方式打開,將檔案指標指向檔案頭。

“r+” 讀寫方式打開,將文件指標指向檔案頭。

「w」 寫入方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。

「w+」 讀寫方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果文件不存在則嘗試建立之。

fwrite(”檔案名稱」,」寫入內容」) 寫入檔案

fclose() 關閉檔案

由於我要轉換的html檔案非常多可能有幾百個所以這裡不能靜態指定fopen的路徑大家可以設定一個路徑變數裡面可以儲存使用者傳來的id等資訊方便進行html檔命名下面是我結合上次php讀取xml資料的一個簡單範例
  1. ob_start();//開啟瀏覽器快取
  2.  
  3. //下面是讀取xml資料
  4. $parser = xml_parser_create(); parser, "startElement", "endElement");//設立標籤觸發時的對應函數這裡分別為startElement和endElenment
  5. xml_set_character_data_handler($parser, "characterData");//設立資料讀取時的對應函數
  6. $xml_file="1.xml";//指定要讀取的xml檔,可以是url
  7. $filehandler = fopen($xml_file, "r");//開啟檔案
  8.  
  9.  
  10. while data = fread($filehandler, 4096)) 
  11. {
  12. xml_parse($parser, $data, feof($filehandler));
  13. }//每次取出4096個位元組進行處理
  14. $filehandler);
  15. xml_parser_free($parser);//關閉和釋放parser解析器
  16.  
  17.  
  18. $name=false;
  19. $position
  20. $name=false;
  21. . attrs) //起始標籤事件的函數
  22. {
  23. global $name,$position;
  24. if($element_name=="NAME")
  25. {
  26. $name=true;
  27. ;
  28. echo "名字:";
  29. }
  30. if($element_name=="POSITION")
  31. {$name=false;
  32. $position=true;{$name=false;
  33. $position=true;
  34. }
  35.  
  36. function characterData($parser_instance, $xml_data) //讀取資料時的函數
  37. {
  38. globalfcom
    ";
  39. if($name)
  40. echo $xml_data."
    ";
  41. }
  42.  
  43. function endElementnce($parser_instance)
  44. {
  45. global $name,$position;
  46. $name=false;
  47. $position=false;
  48. }
  49. //xml0. ";//$id可以自己定義這裡代表使用者傳來的id
  50. $htmlpath="archives/".$htmlname; //設定路徑變數
  51. $content = ob_get_contents();//取得php頁面輸出的全部內容
  52. $fp = fopen($htmlpath, "w");
  53. fwrite($fp, $content);
  54. fclose($fp);
  55. /www.cnblogs.com/awinlei/archive/2013/03/04/2942962.html
  56. 以上就介紹了用php產生靜態html頁面通用2種方法,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles