基于PHP生成静态页的实现方法


Posted in PHP onMay 10, 2013

t1.php

<?php
// 方法一根据模版生成静态页面
// replaceTemplateString函数用于替换模板中指定字符串
function replaceTemplateString($templateString) {
    // 用来替换的变量
    $title = "文章标题";
    $body = "这里是文章主体";
    // 替换模板中指定字符串
    $showString = str_replace ( "%title%", $title, $templateString );
    $showString = str_replace ( "%body%", $body, $showString );
    // 返回替换后的结果
    return $showString;
}

$template_file = "template.html";
$new_file      = "new.html";
// 模版文件指针
$template_juBing = fopen ( $template_file, "r" );
// 要生成的文件指针
$newFile_juBing = fopen ( $new_file, "w" );
// 方式一获取整体模板内容字符串,替换后赋给新文件
$templateString = fread ( $template_juBing, filesize ( $template_file ) );
$showString = replaceTemplateString ( $templateString ); // 替换模板中字符串
fwrite ( $newFile_juBing, $showString ); // 将替换后的内容写入生成的HTML文件
/*
// 方式二循环读取模版每行内容字符串,替换后依次添加到新文件
while ( ! feof ( $template_juBing ) ) { // feof() 函数检测是否已到达文件末尾。如果文件指针到了末尾或者出错时则返回 TRUE。否则返回FALSE(包括 socket 超时和其它情况)。
    $templateString = fgets ( $template_juBing ); // fgets(file,length) 从文件指针中读取一行并返回长度最多为 length - 1 字节长度的字符串,包括换行符。如果没有指定 length,则默认为 1K,或者说 1024 字节。
    $showString = replaceTemplateString ( $templateString );
    fwrite ( $newFile_juBing, $showString ); // 第一次往打开的指针文件中写入内容时会替换指针文件中原有内容,在该文件指针关闭前,fwrite函数再添加内容会在已添加内容之后
}
*/
// 关闭文件指针
fclose ( $newFile_juBing );
fclose ( $template_juBing );
 
/*
数据库与静态页的关系
通常数据库内添加一条信息同后,生成一个该信息的静态页面,所以最好在数据库表中添加一字段存储对应静态页面的路径文件名,方便以后的修改,删除
模版的替换
一般来说,如果需要修改静态HTML页面的模版,通常的做法是将所有的已经生成的HTML页面删除,然后重新创建新的HTML页面。(或者说全部重新覆盖生成)
静态页上的动态操作
有些时候,在创建的静态HTML页上面也需要进行一些动态操作。例如,新闻系统中的每篇新闻要统计点击率。
可通过一个宽和高都为0像素的图像控件来隐藏的调用一个php页面来实现页面计数器功能,如
<img width='0' height='0' src='counter.php?fileid=S001'>
链接目录的静态页
通常对于使用静态页面的系统来说,往往将连接列表的目录页也生成静态HTML文件供访问者浏览
注意的是因为每增加或者减少一条数据库信息都会对链接列表产生影响,因此,每次对数据库信息进行添加和删除时都需要更新链接目录的静态页。
分页的设计可以通过创建多个链接目录的静态页来完成。
*/

// 方法二根据缓冲区生成
ob_start (); // 当缓冲区激活时,并且有ob_end_clean()的情况下,所有输出打印的非文件头信息均不会输出打印到页面,而是保存在内部缓冲区。如果没有ob_end_clean(),则信息既被存在内部缓冲区,也被输出打印
?>
this is test Output Control
<?php
echo "<br>this is test Output Control<br>";
include_once 'cache/newFile.php';
$contents = ob_get_contents (); // 获取缓冲区到此为止存储的信息,缓冲区只保存会向页面浏览器输出打印的内容,php执行代码等不会保存
// $contents = ob_get_clean(); // 获取缓冲区到此为止存储的信息,并关闭清除缓冲区
// ob_end_flush();//输出打印缓冲区到此为止存储的信息,并关闭清除缓冲区
ob_end_clean (); // 关闭清除缓冲区的内容
file_put_contents ( $new_file, $contents );// 向文件写入内容
?>

template.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>%title%</title>
</head>
<body>
<H1>%title%</H1>
<hr>
<pre>%body%</pre>
</body>
</html>
PHP 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
php实现的错误处理封装类实例
Jun 20 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
深入PHP数据缓存的使用说明
May 10 #PHP
基于PHP常用函数的用法详解
May 10 #PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 #PHP
PHP 自定义错误处理函数的使用详解
May 10 #PHP
PHP 类相关函数的使用详解
May 10 #PHP
解析PHP缓存函数的使用说明
May 10 #PHP
基于PHP选项与信息函数的使用详解
May 10 #PHP
You might like
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
js获取form的方法
2015/05/06 Javascript
详解JS面向对象编程
2016/01/24 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android