下面思路和代码是在Demo实现,非框架
实现思路:
举个例子--例如我们要把某个商品的详情存入静态页面
模板文件:需要新建一个Page.html文件
<head>
< meta charset="utf-8" >
<title>%title%</title>
</head>
%gid%--%title%
<hr>
%price%
<hr>
%content%
</body>
</html>
实现代码:需要新建一个html(存放模板文件的文件夹)
<?php
header('content-type:text/html;charset=utf-8');
//判断gid是否有传输
if (isset($_GET['gid'])){
//如果有的话直接赋值
$gid = $_GET['gid'];
} else {
//没有的话默认访问gid为1的
$gid = 1;
}
//定义存储静态页面的路径
$html_file = '../html/' . $gid . '.html';
//判断该文件是否存在
if (file_exists($html_file)){
readfile($html_file); //读取文件并输出
} else {
//模板文件路径
$tpl_file = './Page.html';
//读取模板
$html_data = file_get_contents($tpl_file);
//模拟数据库根据商品ID取数据
$goods_data = [
'gid' => $gid,
'title' => 'PHP生成静态文件之真静态',
'price' => '1.00',
'content' => 'PHP生成静态文件之真静态PHP生成静态文件之真静态PHP生成静态文件之真静态PHP生成静态文件之真静态',
];
//替换数据
$html_data = str_replace("%gid%", $goods_data['gid'], $html_data);
$html_data = str_replace("%title%", $goods_data['title'], $html_data);
$html_data = str_replace("%price%", $goods_data['price'], $html_data);
$html_data = str_replace("%content%", $goods_data['content'], $html_data);
//写入并生成静态文件
file_put_contents($html_file, $html_data);
//输出
echo $html_data;
}
一个简单的生成静态文件的Demo就写完了。