程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP生成靜態html文件一些方法總結

PHP生成靜態html文件一些方法總結

編輯:關於PHP編程

利用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文件名

 代碼如下 復制代碼 <?
$content = "這是一個以日期時間為文件名的靜態生成網頁的測試文件,
文件名格式一般為<font color=#ff0000>年月日時分秒.html</font>";
$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,下面為轉換文件名的一個方法

 代碼如下 復制代碼

<?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文件

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved