基于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 相关文章推荐
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
php检测useragent版本示例
Mar 24 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
跟我学Laravel之路由
Oct 15 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
php实现微信支付之企业付款
May 30 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
php学习笔记之字符串常见操作总结
Jul 16 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 stripos()函数及注意事项的分析
2013/06/08 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
JQUERY获取form表单值的代码
2010/07/17 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python入门必须知道的11个知识点
2018/03/21 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
教师个人自我评价范文
2014/04/13 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书