例子,利用三個函數:ob_start()、ob_get_contents()、ob_end_clean()函數
知識點:
1、ob_start函數一般主要是用來開啟緩衝,注意使用ob_start之前不能有任何輸出,如空格、字元等。
2、ob_get_contents函數主要用來擷取緩衝中的內容以字串形式返回,注意此函數必須在ob_end_clean函數之前調用,否則擷取不到緩衝內容。
3、ob_end_clean函數主要是清空緩衝中的內容並關閉緩衝,成功則返回True,失敗則返回False
輸出控制函數(Output Control)也就是使用和控制緩衝來產生靜態HTML頁面,也會使用到PHP檔案讀寫函數。
PHP產生靜態頁面執行個體代碼
| 代碼如下 |
複製代碼 |
<? ob_start(); echo "<html>". "<head>". "<title>PHP網站靜態化教程</title>". "</head>". "<body>歡迎訪問PHP網站開發教程網www.111cn.net 本文主要介紹PHP網站頁面靜態化的方法</body>". "</html>"; $out1 = ob_get_contents(); ob_end_clean(); $fp = fopen("leapsoulcn.html","w"); if(!$fp) { echo "System Error"; exit(); } else { fwrite($fp,$out1); fclose($fp); echo "Success"; } ?> |
例子,
利用架構模板產生最近比較火的php架構有thinkphp下面我們就以它為例子。
thinkphp提供了一個有效產生靜態頁的方法,(在tp2.0的手冊上有說明,3.0的手冊上沒有說明了,不過3.0方法還是存在的。)
| 代碼如下 |
複製代碼 |
$this->buildHtml('靜態檔案', '靜態路徑','模板檔案'); |
參數一:靜態檔案,是指產生後的靜態檔案名稱,檔案儲存路徑完整的就是:靜態路徑/靜態檔案。例如靜態檔案設定a/index.那麼儲存的路徑就是項 目路徑/Html/a/index.html(預設的靜態路徑在項目路徑的Html檔案夾下,沒有可以自己建立)
參數二:靜態路徑,上面已經說明了預設的路徑,3.0中可以在入口檔案裡加入參數來更改靜態路徑。 define('HTML_PATH', './');(將靜態路徑義為網站根目錄)
參數三:模板檔案,我感覺官方這個描述是不正確的,準確的來說應該是目標模組,就是需要產生靜態檔案的模組。格式:模組名:操作。比如要產生Index下的a方法為靜態檔案,那就是Index:a。如果為空白則預設產生當前操作的靜態檔案。
1 、在入口檔案index.php檔案中定義產生靜態頁面的檔案位置,然後在個目錄建立Html檔案夾
| 代碼如下 |
複製代碼 |
define( 'HTML_PATH' , './Html' );//www.111cn.net |
2 、在根目錄的config檔案夾中的config.php配置靜態頁面的類型,設為 html
| 代碼如下 |
複製代碼 |
| 'HTML_FILE_SUFFIX' = > '.html' , // 預設靜態檔案尾碼 |
3 、在“Tpl / default / ”目錄中建立一個Index的檔案夾,檔案夾下面建立一個index.html的模板, 模板裡面內容為:這是產生靜態頁例子
4 、控制器IndexAction. class .php中的代碼
| 代碼如下 |
複製代碼 |
class IndexAction extends Action{ public function index(){ $this - > buildHtml( '名稱' ,HTML_PATH. '/' , '模版' , 'utf8' ); //注意:這裡的utf8不能寫成utf-8 $this - > display(); } } |
解釋 :
這裡的buildHtml是thinkphp內建的函數,這裡的意思是:
將index的模板檔案產生utf8編碼格式的靜態網頁,該檔案名稱為 1 .html,存在於根目錄的htm檔案中
該函數有 5 個參數,具體如下 :
buildHtml($htmlfile,$htmlpath,$templateFile,$charset,$contentType = 'text/html' )
參數:
$htmlfile 產生的靜態檔案名稱
$htmlpath 產生的靜態檔案路徑
$templateFile 指定要產生靜態模板檔案
$charset 產生靜態檔案的編碼格式
$contentType 產生靜態檔案的類型
// 產生靜態頁
| 代碼如下 |
複製代碼 |
class AddhtmlAction extends CommonAction { public function index(){ $this->assign('abc', 'abc222222222'); $pagename = '123 www.111cn.net'; //頁面名稱 $temppath = ''; //顯示模版路徑 //查看設定檔是否開啟顯示靜態模版 if(C('IS_HTML')) { //判斷是否已經產生靜態頁面 if(!is_file(HTML_PATH . '/'. $pagename .'html')) $this->buildHtml($pagename, HTML_PATH.'/', 'index', 'utf8');//注意:index為動態模版 這裡的utf8不能寫成utf-8 $temppath = HTML_PATH . '/'. $pagename .'html'; } $this->display($temppath); } } |