基于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 相关文章推荐
解决GD中文乱码问题
Feb 14 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
php操作access数据库的方法详解
Feb 22 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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结合ajax实现手机发红包的案例
2016/10/13 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
js中日期的加减法
2015/05/06 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python实现矩阵乘法的方法
2015/06/28 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python简易远程控制单线程版
2018/06/20 Python
详解python里的命名规范
2018/07/16 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python中正则表达式与模式匹配
2019/05/07 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
求职信结尾怎么写
2014/05/26 职场文书
工作失误检讨书范文
2015/01/26 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python