例子,利用三個函數: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..net
2 、在根目錄的config文件夾中的config.php配置靜態頁面的類型,設為 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 {