核心流程
- 讀取模板文件(包含佔位符如
{Title}、{Content})。
- 從數據庫查詢文章數據。
str_replace 替換佔位符為實際內容。
- 以日期時間命名生成
.html 文件寫入磁盤。
完整代碼
<?php
include(dirname(dirname(__FILE__))."\include\config.php");
function GenerateHTML($Date, $Time, $Content, $Title, $Name) {
$GetDateRow = explode("-", $Date);
$GetTimeRow = explode(":", $Time);
$FileName = $GetDateRow[0].$GetDateRow[1].$GetDateRow[2].$GetTimeRow[0].$GetTimeRow[1].$GetTimeRow[2].".html";
$FP = fopen("tmp.html", "r");
$Str = fread($FP, filesize("tmp.html"));
fclose($FP);
$Str = str_replace("{Title}", $Title, $Str);
$Str = str_replace("{Content}", $Content, $Str);
$Str = str_replace("{Name}", $Name, $Str);
$Str = str_replace("{Date}", $Date, $Str);
$Str = str_replace("{Time}", $Time, $Str);
$Handle = fopen($FileName, "w");
fwrite($Handle, $Str);
fclose($Handle);
}
$querysql = "select * from article";
$queryset = mysql_query($querysql);
while ($row = mysql_fetch_array($queryset)) {
GenerateHTML($row['date'], $row['time'], $row['content'], $row['title'], $row['name']);
}
?>
模板文件示例
<html>
<head><title>{Title}</title></head>
<body>
<h1>{Title}</h1>
<div>{Content}</div>
<p>作者:{Name} 日期:{Date} {Time}</p>
</body>
</html>
優化建議
- 使用
ob_start() 捕獲輸出,避免大文件佔用內存。
- 引入模板引擎(Smarty/Blade)支援邏輯標籤。
- 生成後可配合 CDN 靜態化加速。
- 注意文件名衝突,可加入文章 ID 或隨機串。