基于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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 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
PHP读取MySQL数据代码
2008/06/05 PHP
php MYSQL 数据备份类
2009/06/19 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
Yii实现简单分页的方法
2016/04/29 PHP
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python OpenCV实现图片上输出中文
2018/01/22 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Python 多维List创建的问题小结
2019/01/18 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python打开文件的方式有哪些
2020/06/29 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
电子商务实训报告总结
2014/11/05 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技
python中使用redis用法详解
2022/12/24 Redis