PHP 动态页面 静态化 实现方法
作者:我就是个世界
发表于:2007-12-31
[color=#008000]来源:[url=http://ruuur.cn/blog/article.asp?id=138]gxgzres 网志[/url][/color]
PHP动态页面静态化的问题烦扰了我好久,今天总算是找到了一篇很好的文章.虽然其代码存在多处错误,但是依照其思路,参考PHP中文文档,终于是实现了PHP静态化页面生成的功能.这里我就只发出代码了(更多的请查看 朱家博客 http://www.44130.cn/read.php/12.htm).这里再次感谢一下 朱家!
1. 静态生成页 staticstate.php 中代码:
[separator]
[code]<?php
//下面笔者偷了下懒,就没采用 POST 数据来做,只简单演示了下功能.大家可以自行扩展
//获取数据
$title = "标题";
$content = "内容";
//开始生成静态页面
$countFile = "count.txt"; //用以计数的文件
if( !file_exists($countFile) ) //如不存在,则创建
{
$fp = fopen($countFile,"w"); //只写创建计数文件
fclose($fp); //关闭已打开的文件指针
}
$fp = fopen($countFile,"r"); //只读打开计数文件
$countNum = fgets($fp); //从文件指针中读取到文件结尾
$countNum = $countNum + 1; //计数加1
fclose($fp);
$fp = fopen($countFile,"wb"); //只写,二进制打开计数文件
fwrite($fp,$countNum); //写入文件
fclose($fp);
//利用上面 $countFile 计数文件命名文档,并指定路径
//这样就可以实现发布新闻时自动命名文件,如: 1.html , 2.html ,3.html
$fileType = ".html";
$filePath = $countNum.$fileType;
//关键之处,用字符替换的方法替换模板中的标记 {title} {content},并生成文档
$handle = fopen("mb.html","r");
//string fread ( int handle, int length ) 读取文件
//int filesize ( string filename ) 取得文件大小
$str = fread($handle,filesize("mb.html")); //读取模板内容
$str = str_replace("{title}",$title,$str); //替换标记 {title} 为 $title
$str = str_replace("{content}",$content,$str); //替换标记 {content} 为 $content
fclose($handle);
$handle = fopen($filePath,"w"); //只写方式打开生成文档路径
fwrite($handle,$str); //把刚刚完成替换的内容写进生成的.html文件中
fclose($handle);
?>[/code]
2. 在 mb.html 中的代码:
[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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>[/code]
这样就实现了静态页面生成的简单功能.大家可以在此思路下来做些扩展,如向数据库中添加文档相关记录等.
PHP动态页面静态化的问题烦扰了我好久,今天总算是找到了一篇很好的文章.虽然其代码存在多处错误,但是依照其思路,参考PHP中文文档,终于是实现了PHP静态化页面生成的功能.这里我就只发出代码了(更多的请查看 朱家博客 http://www.44130.cn/read.php/12.htm).这里再次感谢一下 朱家!
1. 静态生成页 staticstate.php 中代码:
[separator]
[code]<?php
//下面笔者偷了下懒,就没采用 POST 数据来做,只简单演示了下功能.大家可以自行扩展
//获取数据
$title = "标题";
$content = "内容";
//开始生成静态页面
$countFile = "count.txt"; //用以计数的文件
if( !file_exists($countFile) ) //如不存在,则创建
{
$fp = fopen($countFile,"w"); //只写创建计数文件
fclose($fp); //关闭已打开的文件指针
}
$fp = fopen($countFile,"r"); //只读打开计数文件
$countNum = fgets($fp); //从文件指针中读取到文件结尾
$countNum = $countNum + 1; //计数加1
fclose($fp);
$fp = fopen($countFile,"wb"); //只写,二进制打开计数文件
fwrite($fp,$countNum); //写入文件
fclose($fp);
//利用上面 $countFile 计数文件命名文档,并指定路径
//这样就可以实现发布新闻时自动命名文件,如: 1.html , 2.html ,3.html
$fileType = ".html";
$filePath = $countNum.$fileType;
//关键之处,用字符替换的方法替换模板中的标记 {title} {content},并生成文档
$handle = fopen("mb.html","r");
//string fread ( int handle, int length ) 读取文件
//int filesize ( string filename ) 取得文件大小
$str = fread($handle,filesize("mb.html")); //读取模板内容
$str = str_replace("{title}",$title,$str); //替换标记 {title} 为 $title
$str = str_replace("{content}",$content,$str); //替换标记 {content} 为 $content
fclose($handle);
$handle = fopen($filePath,"w"); //只写方式打开生成文档路径
fwrite($handle,$str); //把刚刚完成替换的内容写进生成的.html文件中
fclose($handle);
?>[/code]
2. 在 mb.html 中的代码:
[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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>[/code]
这样就实现了静态页面生成的简单功能.大家可以在此思路下来做些扩展,如向数据库中添加文档相关记录等.
已有1条评论