利用php產生靜態檔案我們用到最多的是以模板形式來替換產生了,如我把{A}定義為標籤在php中只要利用fopen讀模數板檔案,然後再利用replace替換{A}為PHP產生靜態html檔案執行個體即可。
1,下面使用模版的一個方法!
代碼如下 |
複製代碼 |
$fp = fopen ("templets.html","a"); if ($fp){ $fup = fread ($fp,filesize("templets.html")); $fp2 = fopen ("html.shtml","w"); if ($fwrite ($fp2,$fup)){ $fclose ($fp); $fcolse ($fp2); die ("寫入模板成功"); } else { fclose ($fp); die ("寫入模板失敗!"); } } ?> |
簡單的將模板寫進一個檔案中存為html.html
2,按時間產生html檔案名稱
代碼如下 |
複製代碼 |
$content = "這是一個以日期時間為檔案名稱的靜態產生網頁的測試檔案, 檔案名稱格式一般為年月日時分秒.html"; $date = date('YmdHis'); $fp = fopen (date('YmdHis') . '.html',"w"); //本函數可用來開啟本地或者遠端的檔案 'w' 開檔案方式為寫入, 檔案指標指到開始處,並將原檔案的長度設為 0。若檔案不存在, 則建立新檔案。 if (fwrite ($fp,$content)){ //格式是.int fwrite(int fp(檔案名稱), string string(內容), int [length](長度));本函數將字串 string 寫入檔案資料流的指標 fp 上。 若有指定長度 length,則會寫入指定長度字串,或是寫到字串結束。 fclose ($fp);//函數用來關閉已經開啟的檔案的指標 fp。 成功返回 true,失敗則返回 false。 die ("寫入模板成功"); } else { fclose ($fp); die ("寫入模板失敗!"); } echo ($content); ?>
|
3,下面為轉換檔名的一個方法
代碼如下 |
複製代碼 |
$s_fname = "93e.php"; $o_fname = "93e.htm"; ob_end_clean(); ob_start(); include($s_fname); $length = ob_get_length(); $buffer = ob_get_contents(); $buffer = eregi_replace("r","",$buffer); ob_end_clean(); $fp = fopen($o_fname,"w+"); fwrite($fp,$buffer); fclose($fp); ?> |
這樣就可以把 93e.php轉化為靜態HTML檔案了 。要注意的是待轉換的檔案裡不能有 ob_end_clean();和 ob_start();語句,且目錄要有寫入權限。
上面三種方法都是產生了html頁面每次都要更新才有更新了,下面我們可以使用動態網頁面緩衝技術來執行個體html+php頁面,這個方法比上面都要好
首先設定.htaccess檔案,將動態調用的參數轉換為靜態HTML的URL地址,例如將在post目錄下的檔案,轉寄到根目錄的wp-post.php檔案中,加入的語句類似:
代碼如下 |
複製代碼 |
RewriteRule ^post/([a-z0-9-]+.html)$ wp-post.php?$1$2 |
然後修改wp-post.php檔案,在檔案的開頭加入以下PHP代碼:
代碼如下 |
複製代碼 |
ob_start(); $qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : ""; define("HTML_FILE", $_SERVER['DOCUMENT_ROOT']."/post/".$qstring); if (file_exists(HTML_FILE)) { $lcft = filemtime(HTML_FILE); if (($lcft + 3600) > time()) //判斷上次產生HTML檔案是否超過1小時,若沒有才直接輸出檔案內容 { echo(file_get_contents(HTML_FILE)); exit(0); } } |
之後是現有的PHP的代碼,然後在當前代碼的最後面加上如下的PHP代碼:
代碼如下 |
複製代碼 |
define("HTMLMETA",""); $buffer = ob_get_flush(); $fp = fopen(HTML_FILE, "w"); if ($fp) { fwrite($fp, $buffer.HTMLMETA); fclose($fp); } |
好了,然後查看你的靜態HTML頁面,如果頁面尾部出現了注釋行,說明已經成功的建立了靜態HTML檔案
http://www.bkjia.com/PHPjc/633160.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633160.htmlTechArticle利用php產生靜態檔案我們用到最多的是以模板形式來替換產生了,如我把{A}定義為標籤在php中只要利用fopen讀模數板檔案,然後再利用repla...