实例一
原理剖析:
当我们制作数据量大以及访问人数多的网站时往往会采用动态生成html静态页面的方法,这样做的好处是用户直接访问静态页面,减轻了服务器的负担,又可以对搜索引擎更加友好,可谓一举两得;
其原理是先读入模板文件,然后按照一定的规则替换模板中的标签,具体实现如下:
index.tpl 模板文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{title}</title>
</head>
<body>
{content}
</body>
</html>
index.php 服务端代码:
<?php
$data = array('id' => 1, 'title' => '这里是标题', 'content' => '这里是内容');
$tpl = 'index.tpl';
$content = file_get_contents($tpl); //读取模板文件的内容
$content = str_replace('{title}',$data['title'],$content); //用具体数据来替换模板标签
$content = str_replace('{content}',$data['content'],$content);
file_put_contents($data['id'].'.html',$content); //将替换后的内容写进html文件中
?>
这里是从数组中直接读取数据,实际过程中可以将数据库读取的数据保存在数组中,然后用循环的方法实现替换就行了。
实例二
//单页生成html页
<?php
ob_start(); //开启服务器缓存
include_once '../gsjj.php';
$ctx=ob_get_contents(); //获取缓存
ob_end_clean(); //清空缓存
$fh=fopen("../gsjj.html","w+");
fwrite($fh,$ctx); //写入html,生成html
fclose($fh);
echo "<script>alert('文件生成成功');location.href='makehtml.php';</script>";
?>
//新闻列表带分页生成html页
<?php
$fp = fopen ("../new.html","r"); //只读方式打开 new.html模板,将文件指针指向文件头
$content = fread ($fp,filesize ("../new.html")); //读取整个文件内容
$list = '';
$num=0;
$sql= "select * from news ";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result))
{ //查询entries表,取出列表项
$num++;
if($row["url"]=="")
{
$list .= "<ul class='news' id='ul'><li><a href='".$row["tid"].".html'>".$row['title']."</a></li></ul>";
}
else
{
$list .= "<ul class='news' id='ul'><li><a href='".$row["url"]."' target='_blank'>".$row['title']."</a></li></ul>";
}
}
$content= str_replace (