php中靜態化產生的方法(htm頁面產生)

來源:互聯網
上載者:User

例子,利用三個函數: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);
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.