利用php生成靜態文件我們用到最多的是以模板形式來替換生成了,如我把{A}定義為標簽在php中只要利用fopen讀取模板文件,然後再利用replace替換{A}為PHP生成靜態html文件實例即可。
1,下面使用模版的一個方法!
代碼如下 復制代碼<?php
$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文件名
3,下面為轉換文件名的一個方法
代碼如下 復制代碼<?php
$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","<!-- this is a real static html file created at ".date("Y-m-d H:i:s")." -->");
$buffer = ob_get_flush();
$fp = fopen(HTML_FILE, "w");
if ($fp)
{
fwrite($fp, $buffer.HTMLMETA);
fclose($fp);
}
好了,然後查看你的靜態HTML頁面,如果頁面尾部出現了注釋行,說明已經成功的創建了靜態HTML文件