首頁 >後端開發 >php教程 >php 靜態頁產生的二種方法解析

php 靜態頁產生的二種方法解析

WBOY
WBOY原創
2016-07-25 08:59:31908瀏覽
  1. // 方法1,根據模版產生靜態頁面

  2. // replaceTemplateString函數用於替換模板中指定字串
  3. function replaceTemplateString($templateString) {
  4. // 用來取代的變數
  5. $title = "文章標題";
  6. $body = "這裡是文章主體";
  7. / / 替換模板中指定字串
  8. $showString = str_replace ( "%title%", $title, $templateString );
  9. $showString = str_replace ( "%body%", $body, $showString );
  10. // 回傳替換後的結果
  11. return $showString;
  12. }
  13. $template_file = "template.html";

  14. $new_file = "new.html" ;
  15. // 模版檔案指標
  16. $template_juBing = fopen ( $template_file, "r" );
  17. // 要產生的檔案指標
  18. $newFile_juBing = fopen ( $new_file, "w" ) ;
  19. // 方式1,取得整體模板內容字串,替換後賦給新檔案

  20. $templateString = fread ( $template_juBing, filesize ( $template_file ) );
  21. $showString = replaceTemplateString ( $templateString ); // 取代模板中字串
  22. fwrite ( $newFile_juBing, $showString ); // 將替換後的內容寫入產生的HTML檔案
  23. /*

  24. // 方式2,循環讀取模版每行內容字串,替換後依序加入新檔案
  25. while ( ! feof ( $template_juBing ) ) { // feof() 函數偵測是否已到達文件末尾。如果檔案指標到了結尾或出錯時則回傳 TRUE。否則返回FALSE(包括 socket 超時和其它情況)。
  26. $templateString = fgets ( $template_juBing ); // fgets(file,length) 從檔案指標中讀取一行並傳回長度最多為 length - 1 位元組長度的字串,包括換行符。如果沒有指定 length,則預設為 1K,或說 1024 位元組。
  27. $showString = replaceTemplateString ( $templateString );
  28. fwrite ( $newFile_juBing, $showString ); // 第一次往開啟的指標檔案中寫入內容時會取代指標檔案中原有內容,在該檔案指標關閉前,fwrite函數再加入內容會在已新增內容之後
  29. }
  30. */
  31. // 關閉檔案指標
  32. fclose ( $newFile_juBing );
  33. fclose ( $template_juBing );
  34. /*

  35. 資料庫與靜態頁的關係
  36. 通常資料庫內新增一則資訊同後,產生一個該資訊的靜態頁面,所以最好在資料庫表中新增一欄位儲存對應靜態頁面的路徑檔名,方便以後的修改,刪除
  37. 模版的替換

  38. 一般來說,如果需要修改靜態HTML頁面的模版,通常的做法是將所有的已經產生的HTML頁面刪除,然後重新建立新的HTML頁面。 (或者說全部重新覆蓋生成)
  39. 靜態頁上的動態操作

  40. 有些時候,在創建的靜態HTML頁上面也需要進行一些動態操作。例如,新聞系統中的每篇新聞要統計點擊率。
  41. 可透過一個寬和高都為0像素的映像控制項來隱藏的呼叫一個php頁面來實現頁面計數器功能,如
  42. php 靜態頁產生的二種方法解析
  43. 連結目錄的靜態頁

  44. 通常對於使用靜態頁面的系統來說,往往將連接清單的目錄頁也產生靜態HTML檔案供訪客瀏覽
  45. 注意的是因為每增加或減少一條資料庫資訊都會對連結清單產生影響,因此,每次對資料庫資訊進行新增和刪除時都需要更新連結目錄的靜態頁。
  46. 分頁的設計可以透過建立多個連結目錄的靜態頁來完成。
  47. */
  48. // 方法2,根據緩衝區產生

  49. ob_start (); // 當緩衝區啟動時,並且有ob_end_clean()的情況下,所有輸出列印的非文件頭資訊均不會輸出列印到頁面,而是保存在內部緩衝區。如果沒有ob_end_clean(),則訊息既被存在內部緩衝區,也被輸出列印
  50. ?>
複製程式碼
複製程式碼

this is test Output Control

  1. echo "
    this is test Output Control
    ";

  2. include_once 'include_once ' cache/newFile.php';
  3. $contents = ob_get_contents (); // 取得緩衝區到此為止儲存的信息,緩衝區只保存會輸出到頁面瀏覽器的內容, php執行程式碼等不會保存

  4. // $contents = ob_get_clean(); // 取得緩衝區到此為止儲存的信息,並關閉清除緩衝區
  5. // ob_end_flush( );//輸出列印緩衝區到此為止儲存的信息,並關閉清除緩衝區

  6. ob_end_clean (); // 關閉清除緩衝區的內容

  7. file_put_contents ( $new_file, $contents );// 向文件寫入內容
  8. ?>
複製代碼

2、模板文件,template.html

  1. %title%
  2. %title%


  3. % body%
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn