我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单。

代码如下:

//在你的开始处加入 ob_start();

ob_start();

//以下是你的代码

//在结尾加入 ob_end_clean(),并把本页输出到一个变量中

$temp = ob_get_contents();

ob_end_clean();

//写入文件

$fp = fopen(‘文件名','w');

fwrite($fp,$temp) or die(‘写文件错误');

?>

这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML

下面是我用的方法:

代码如下:

if(file_exists(“xxx.html”))

{

$time = time();

//文件修改时间和现在时间相差半小时一下的话,直接导向html文件,否则重新生成html

if($time - filemtime(“xxx.html”) < 30*60)

{

header(“Location:xxx.html”);

}

}

//在你的开始处加入 ob_start();

ob_start();

//页面的详细内容

//在结尾加入 ob_end_clean(),并把本页输出到一个变量中

$temp = ob_get_contents();

ob_end_clean();

//写入文件

$fp = fopen(‘xxx.html','w');

fwrite($fp,$temp) or die(‘写文件错误');

//重新导向

header(“Location:xxx.html”);

上面用的缓存文件在大量生成时会出现负载过重,下面我们介绍一种更为高效的方法

以下是输入内容的提交页面:

文件名:aa.html

代码如下:

提交页面

标题:

内容:

以下是代码片段:

文件名:bb.php

代码如下:

//定义日期函数

function getdatetime()

{

$datetime=getdate();

$strReturn=$datetime["year"]."-";

$strReturn=$strReturn.$datetime["mon"]."-";

$strReturn=$strReturn.$datetime["mday"];

return $strReturn;

}

//定义时间函数(文件名)

function gettime()

{

$times=getdate();

$strtime=$times["year"];

$strtime=$strtime.$times["mon"];

$strtime=$strtime.$times["mday"];

$strtime=$strtime.$times["minutes"];

$strtime=$strtime.$times["seconds"];

return $strtime;

}

?>

//判断提交值是否为空

$submit=$_POST["submit"];

//定义文件头部信息

$htmltitle=$_POST["htmltitle"];

//定义文件内容

$htmlbody=$_POST["htmlbody"];

if ($submit) {

//定义html文件标签

$html1=$html1."";

$html1=$html1."

";

$html1=$html1."

";

$html1=$html1.$htmltitle;

$html1=$html1."

";

$html1=$html1."";

$html1=$html1."";

$html1=$html1."

";

$html1=$html1."

";

$html1=$html1.$htmltitle;

$html1=$html1."

$html1=$html1."

";

$html1=$html1.$htmlbody;

$html1=$html1."

";

$html1=$html1."";

$html1=$html1."";

//判断今天的文件夹是否存在

if (!is_dir(getdatetime())) {

//如果不存在就建立

mkdir(getdatetime(),0777);

}

//写成html文件

$filedir=getdatetime();

$filename=gettime();

$filename=$filename.".html";

$fp=fopen("$filedir/$filename","w");

fwrite($fp,$html1);

fclose($fp);

echo "";

}

?>

如果提示文件写入成功,那你就成功了,然后回到你的相应目录里看看有没有生成静态的html文件!

smarty模板生成方法

代码如下:

require_once("./config/config.php");

ob_start();

$id=$_GET[id];

$sql="select * from table_name where id='$id'";

$result=mysql_query($sql);

$rs=mysql_fetch_object($result);

$smarty->assign("showtitle",$rs->title);

$smarty->assign("showcontent",$rs->content);

$smarty->display("content.html");

$this_my_f= ob_get_contents();

ob_end_clean();

$filename = "$id.html";

tohtmlfile_cjjer($filename,$this_my_f);

// 文件生成函数

function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content){

if (is_file ($file_cjjer_name)){

@unlink ($file_cjjer_name); //存在,就删除

}

$cjjer_handle = fopen ($file_cjjer_name,"w"); //创建文件

if (!is_writable ($file_cjjer_name)){ //判断写权限

return false;

}

if (!fwrite ($cjjer_handle,$file_cjjer_content)){

return false;

}

fclose ($cjjer_handle); //关闭指针

return $file_cjjer_name; //返回文件名

}

?>

smarty中有一个获取模板页内容方法fetch(), 它的声明原形是这样的:

代码如下:

function fetch($resource_name, $cache_id = null,

$compile_id = null, $display = false)

?>

第一个参数为模板名称, 第二个参数为缓存的id, 第三个参数为编译id, 第四个参数为是否显示模板内容. 生成静态页我们就需要用到这个方法.

代码如下:

$smarty = new Smarty();

//其它模板替换语法...

//下面这句取得页面中所有内容, 注意最后一个参数为false

$content = $smarty->fetch('模板名称.tpl', null, null, false);

//下面将内容写入至一个静态文件

$fp = fopen('news.html', 'w');

fwrite($fp, $content);

fclose($fp);

//OK, 到这里这个news.html静态页就生成了, 你可以处理你下一步的工作了

?>

好了结合上面的方法我们生成文件几乎原理都一样,先把数据读取出来然后给我们定义好的模板,最后利用fopen函数生成一个.html的文件

以上几种php生成html静态文件的方法原理上都大同小异,只是在方法上略有不同,都有优缺点,大家根据自己的项目需求,自由选择吧

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php如何生成html,php生成html文件方法总结相关推荐

  1. python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法

    在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...

  2. Cocos2d使用TexturePacker工具打包生成plist和pvr.ccz文件方法总结

    我们用TexturePacker工具打包生成了plist和pvr.ccz文件,那么下一步,我们就该获取plist中的信息了. Cocos2d中SpriteFrameCache通常用来处理plist文件 ...

  3. 把对像生成json并存储到文件

    1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField;import java.util.Date;public class Stu ...

  4. R语言R-markdown实战示例、R-markdown、R-markdown生成结果汇报的HTML文件

    R语言R-markdown实战示例.R-markdown.R-markdown生成结果汇报的HTML文件 目录 R语言R-markdown实战示例.R-markdown.R-markdown生成结果汇 ...

  5. python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;

    python使用fpdf生成发票格式的pdf文件包含:文字.图片logo.表格.条形码等: pip install fpdf #python使用fpdf生成发票格式的pdf文件包含:文字.图片logo ...

  6. ReactNative生成android平台的bundle文件命令

    ReactNative生成android平台的bundle文件命令 2016年11月03日 23:23:28 阅读数:4869 注:如果assets文件没有正确生成,需要手机创建或授权 网上的其它的很 ...

  7. SFTP连接GCP,向服务器发送文件方法,第三方工具生成密钥对连接GCP服务器(putty生成密钥远程连接服务器)...

    190223更新通过WinSCP工具导入key,向服务器发送文件方法: 很多时候需要向服务器发送文件,GCP和一般服务器不太一样,使用ftp和用户名密码不容易获取,一般采用秘钥的方式,下边介绍实现方法 ...

  8. c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件

    1. webpack中的CommonJS和ES Mudule 规范 1.1 CommonJs规范 CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运 ...

  9. Python生成Windows可执行exe文件

    环境 python3.6.5 pyinstaller3.5 windows 10 下载地址 python:https://www.python.org/ftp/python/3.6.5/python- ...

  10. openssl pem 生成公钥和私钥及文件

    openssl pem.h 中提供了关于pem格式密钥对的操作接口 通常使用.pem的格式文件来保存openssl 生成的密钥对: 在终端下 cat xxx.pem 可以看到 -----BEGIN R ...

最新文章

  1. 嵌入式自学多久可以找工作?应届生找嵌入式工作难吗?
  2. NBT-19年2月刊4篇35分文章聚焦宏基因组研究
  3. matplotlib error - no module named tkinter
  4. 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...
  5. SQL Azure SU3 现已在全球6座数据中心开始启用
  6. 使用 Async 和 Await 的异步编程
  7. 谈谈Circuit Breaker在.NET Core中的简单应用
  8. Hive 处理 json 数据
  9. 三星发布8nm芯片Exynos 850
  10. 【Android】【移动应用开发】基础知识
  11. BMW Trojan 样本分析
  12. apidoc 自动化生成 api接口文档
  13. 我要砍价-自动砍价-思路
  14. 抖音账号矩阵系统源代码开发
  15. python识图自动化_Python自动化测试-验证识别
  16. 【入门AUTOSAR网络管理测试】RMS-NOS状态转换
  17. 对java 链表删除节点 引用误区理解:对局部变量 cur= cur.next及cur.next=cur.next.next,及cur.next = cur.next.next.next的理解图解
  18. 双目视觉(六)U-V视差
  19. Android-sdkmanager
  20. 2018-06-03 对待知识的态度 --王小波

热门文章

  1. camerax 自动聚焦_Android实现手机摄像头的自动对焦
  2. php如何给进入网页加入密码,怎么给一个PHP密码访问页面加超链接
  3. linux下.rar的文件,Linux下.rar压缩文件处理 (RAR 4.11 for linux )
  4. 《LINUX设备驱动程序》学习之与硬件通信(并行接口)实例
  5. python hibernate_将Java/MVC/Hibernate webapp移植到Python
  6. c语言boolean作为全局变量_最容易忽略的C语言知识点细节,编程大牛进阶之路!...
  7. springboot的jsp应该放在哪_详解SpringBoot 添加对JSP的支持(附常见坑点)
  8. python结构嵌套_python2.3嵌套if结构:
  9. 方差分析 球形检验_重复测量数据的方差分析
  10. linux命令之nc,emacs,go run,查看文件行数等