当前位置: 首页 > 编程笔记 >

php生成html文件方法总结

江佐
2023-03-14
本文向大家介绍php生成html文件方法总结,包括了php生成html文件方法总结的使用技巧和注意事项,需要的朋友参考一下

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


<?php

//在你的开始处加入 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


<html>

<head>

<title>提交页面</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>

<form method="post" action="bb.php">

标题:<input type="text" name="htmltitle"><br>

内容:<textarea rows="8" cols="45" name="htmlbody"></textarea><br>

<input type="submit" name="submit" value="添加新闻">

</form>

</body>

</html>


以下是代码片段:
文件名:bb.php


<?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;

}

?>

<?php

//判断提交值是否为空

$submit=$_POST["submit"];

//定义文件头部信息

$htmltitle=$_POST["htmltitle"];

//定义文件内容

$htmlbody=$_POST["htmlbody"];

if ($submit) {

//定义html文件标签

$html1=$html1."<html>";

$html1=$html1."<head>";

$html1=$html1."<title>";

$html1=$html1.$htmltitle;

$html1=$html1."</title>";

$html1=$html1."<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>";

$html1=$html1."</head>";

$html1=$html1."<body>";

$html1=$html1."<table border='1' width='740' cellpadding='2' cellspacing='0' bordercolordark='#f7f7f7' bordercolorlight='#cccccc'><tr><td align='center' bgcolor='#f7f7f7' height='30'><font size='3'><b>";

$html1=$html1.$htmltitle;

$html1=$html1."</b></font></td></tr>";

$html1=$html1."<tr><td><font size='2'>";

$html1=$html1.$htmlbody;

$html1=$html1."</font></td></tr></table>";

$html1=$html1."</body>";

$html1=$html1."</html>";

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

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 "<script>alert('文件写入成功');location.href='111.php';</script>";

}

?>

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

smarty模板生成方法


<?php

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(), 它的声明原形是这样的:


<?php 

function fetch($resource_name, $cache_id = null, 

  $compile_id = null, $display = false) 

?>


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


<?php 

   $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生成随机颜色方法汇总的使用技巧和注意事项,需要的朋友参考一下 方法一: 随机生成颜色值(例如 FF00FF). color.php 方法二: 方法三: 使用方法如下: <?php echo '<span style="color: #'.randColor().'">随机颜色:#'.randColor().'</span>';?>

  • 本文向大家介绍PHP文件操作方法汇总,包括了PHP文件操作方法汇总的使用技巧和注意事项,需要的朋友参考一下 在data文件中写入数据: 写入成功后可以在页面看到“OK” 接下来读取data文件里的数据 如果有多行数据该怎么读取? 方法一 while: 方法二 file_get_contents(): 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 一直以来不会使用C++一直是我心头痛,不过学习Go从某种意义上补偿了我这个遗憾。 比如生成dll一直以来几乎就是C和C++的专利,现在我可以用Go轻松的实现这一点。 下面我使用一个实例来做到这一点,这个是我写的判断jpeg图是不是正向的一个Go的函数 package main import "C" import ( "fmt" "os" SunnyUtil "githu

  • 本文向大家介绍PHP下载生成的csv文件及问题总结,包括了PHP下载生成的csv文件及问题总结的使用技巧和注意事项,需要的朋友参考一下 最近做了一个项目需要把订单的信息显示出来,并且能够把相关信息放到一个.csv 文件中,下载到浏览器。虽然说csv是一种比较简单的excel表格形式,生成只要按指定格式然后生成.csv文件就可以,但是在使用中也会遇到很多问题,下面给大家分享下PHP下载csv文件及问

  • 本文向大家介绍PHP生成唯一订单号的方法汇总,包括了PHP生成唯一订单号的方法汇总的使用技巧和注意事项,需要的朋友参考一下 第一种 第二种 第三种 第四种: 在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母、年月日、Unix 时间戳和微秒数、随机数,重复的可能性大大降低,还是很不错的。使用字母很有代表性,一个字母对应一个年份,总共

  • 本文向大家介绍php 获取文件行数的方法总结,包括了php 获取文件行数的方法总结的使用技巧和注意事项,需要的朋友参考一下 stream_get_line获取文件行数 feof和fgets获取文件行数 count获取文件行数 第三种方式因为要保存文件的内容,效率上会很差,这里小编推荐大家使用第一种和第二种方法。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!