php如何生成html,php生成html文件方法总结
我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单。
代码如下:
//在你的开始处加入 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文件方法总结相关推荐
- python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法
在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...
- Cocos2d使用TexturePacker工具打包生成plist和pvr.ccz文件方法总结
我们用TexturePacker工具打包生成了plist和pvr.ccz文件,那么下一步,我们就该获取plist中的信息了. Cocos2d中SpriteFrameCache通常用来处理plist文件 ...
- 把对像生成json并存储到文件
1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField;import java.util.Date;public class Stu ...
- R语言R-markdown实战示例、R-markdown、R-markdown生成结果汇报的HTML文件
R语言R-markdown实战示例.R-markdown.R-markdown生成结果汇报的HTML文件 目录 R语言R-markdown实战示例.R-markdown.R-markdown生成结果汇 ...
- python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;
python使用fpdf生成发票格式的pdf文件包含:文字.图片logo.表格.条形码等: pip install fpdf #python使用fpdf生成发票格式的pdf文件包含:文字.图片logo ...
- ReactNative生成android平台的bundle文件命令
ReactNative生成android平台的bundle文件命令 2016年11月03日 23:23:28 阅读数:4869 注:如果assets文件没有正确生成,需要手机创建或授权 网上的其它的很 ...
- SFTP连接GCP,向服务器发送文件方法,第三方工具生成密钥对连接GCP服务器(putty生成密钥远程连接服务器)...
190223更新通过WinSCP工具导入key,向服务器发送文件方法: 很多时候需要向服务器发送文件,GCP和一般服务器不太一样,使用ftp和用户名密码不容易获取,一般采用秘钥的方式,下边介绍实现方法 ...
- c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件
1. webpack中的CommonJS和ES Mudule 规范 1.1 CommonJs规范 CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运 ...
- Python生成Windows可执行exe文件
环境 python3.6.5 pyinstaller3.5 windows 10 下载地址 python:https://www.python.org/ftp/python/3.6.5/python- ...
- openssl pem 生成公钥和私钥及文件
openssl pem.h 中提供了关于pem格式密钥对的操作接口 通常使用.pem的格式文件来保存openssl 生成的密钥对: 在终端下 cat xxx.pem 可以看到 -----BEGIN R ...
最新文章
- 嵌入式自学多久可以找工作?应届生找嵌入式工作难吗?
- NBT-19年2月刊4篇35分文章聚焦宏基因组研究
- matplotlib error - no module named tkinter
- 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...
- SQL Azure SU3 现已在全球6座数据中心开始启用
- 使用 Async 和 Await 的异步编程
- 谈谈Circuit Breaker在.NET Core中的简单应用
- Hive 处理 json 数据
- 三星发布8nm芯片Exynos 850
- 【Android】【移动应用开发】基础知识
- BMW Trojan 样本分析
- apidoc 自动化生成 api接口文档
- 我要砍价-自动砍价-思路
- 抖音账号矩阵系统源代码开发
- python识图自动化_Python自动化测试-验证识别
- 【入门AUTOSAR网络管理测试】RMS-NOS状态转换
- 对java 链表删除节点 引用误区理解:对局部变量 cur= cur.next及cur.next=cur.next.next,及cur.next = cur.next.next.next的理解图解
- 双目视觉(六)U-V视差
- Android-sdkmanager
- 2018-06-03 对待知识的态度 --王小波
热门文章
- camerax 自动聚焦_Android实现手机摄像头的自动对焦
- php如何给进入网页加入密码,怎么给一个PHP密码访问页面加超链接
- linux下.rar的文件,Linux下.rar压缩文件处理 (RAR 4.11 for linux )
- 《LINUX设备驱动程序》学习之与硬件通信(并行接口)实例
- python hibernate_将Java/MVC/Hibernate webapp移植到Python
- c语言boolean作为全局变量_最容易忽略的C语言知识点细节,编程大牛进阶之路!...
- springboot的jsp应该放在哪_详解SpringBoot 添加对JSP的支持(附常见坑点)
- python结构嵌套_python2.3嵌套if结构:
- 方差分析 球形检验_重复测量数据的方差分析
- linux命令之nc,emacs,go run,查看文件行数等