在PHP中生成HTML文件静态页,在后续的访问可以直接加载静态文件而无需再次执行PHP脚本。这可以提高网站性能,减轻服务器负担,并改善页面加载速度。
用一个简单的小项目来说明PHP生成HTML静态页原理,包含:模板分离、自动创建目录、生成静态页、更新静态页、删除静态页、生成列表页+详情页、防重复生成、错误提示等功能。
项目结构
/
├── template/ # 模板文件夹
│ ├── index.html # 首页模板
│ └── article.html # 文章详情页模板
├── html/ # 自动生成的静态页存放目录(自动创建)
└── create_html.php # 生成静态页核心程序
首页模板:template/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{site_name}</title>
</head>
<body>
<h1>{site_name}</h1>
<p>网站描述:{site_desc}</p>
<h3>最新文章列表</h3>
<ul>
{article_list}
</ul>
</body>
</html>
文章详情模板:template/article.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
<p>发布时间:{add_time}</p>
<div style="margin:20px 0;">{content}</div>
<a href="index.html">返回首页</a>
</body>
</html>
核心生成程序:create_html.php
<?php
// 生成静态页核心类
class CreateHtml
{
// 模板和静态页存放目录
private $tpl_dir = 'template/';
private $html_dir = 'html/';
public function __construct()
{
// 自动创建静态页目录
if (!is_dir($this->html_dir)) {
mkdir($this->html_dir, 0755, true);
}
}
/**
* 生成静态页面
* @param string $tpl_file 模板文件
* @param string $html_file 生成的静态文件
* @param array $data 要替换的数据
* @return bool
*/
public function make($tpl_file, $html_file, $data = [])
{
// 读取模板
$tpl_path = $this->tpl_dir . $tpl_file;
if (!file_exists($tpl_path)) {
die("模板不存在:" . $tpl_path);
}
$html = file_get_contents($tpl_path);
// 替换变量
foreach ($data as $key => $val) {
$html = str_replace('{' . $key . '}', $val, $html);
}
// 写入静态文件
$save_path = $this->html_dir . $html_file;
$res = file_put_contents($save_path, $html);
return $res ? true : false;
}
// 删除静态页
public function del($html_file)
{
$path = $this->html_dir . $html_file;
return file_exists($path) ? unlink($path) : true;
}
}
// 使用示例(模拟从数据库读取数据)
$html = new CreateHtml();
// 生成首页
$index_data = [
'site_name' => '我的完善版静态网站',
'site_desc' => '基于PHP生成的纯HTML静态页面',
'article_list' => ''
];
// 模拟文章数据
$article_list = [
['id' => 1, 'title' => 'PHP生成静态页原理详解', 'add_time' => date('Y-m-d H:i:s')],
['id' => 2, 'title' => '静态页面优化与SEO技巧', 'add_time' => date('Y-m-d H:i:s')],
['id' => 3, 'title' => 'PHP模板替换高级用法', 'add_time' => date('Y-m-d H:i:s')],
];
// 拼接文章列表
foreach ($article_list as $vo) {
$index_data['article_list'] .= "<li><a href='article_{$vo['id']}.html'>{$vo['title']}</a> ({$vo['add_time']})</li>";
}
// 生成首页
$res = $html->make('index.html', 'index.html', $index_data);
echo $res ? "首页生成成功!<br>" : "首页生成失败!<br>";
// 批量生成文章详情页
foreach ($article_list as $vo) {
$detail_data = [
'title' => $vo['title'],
'add_time' => $vo['add_time'],
'content' => "这是文章【{$vo['id']}】的详细内容,功能完善版PHP静态页生成,支持列表+详情页、自动创建目录、增删改查。"
];
$html_file = "article_{$vo['id']}.html";
$res = $html->make('article.html', $html_file, $detail_data);
echo $res ? "文章 {$vo['id']} 生成成功!<br>" : "文章 {$vo['id']} 生成失败!<br>";
}
// 删除静态页示例
// $html->del('article_1.html');
// echo "已删除静态页:article_1.html<br>";
?> 本站原创内容,转载请注明来源:https://www.liutonghui.com/60
评论列表(0条)
暂无评论