php自动生成静态页,PHP动态页生成静态页的3种常用方法

生成静态页的页面非常的简单就是定义好模板与模板标题,之后利用str_replace进行替换了,是最常用的方法,另一种是利用ob_get_contents输出获得然后生成html,还有一种不怎么推荐的是使用file_get_contents直接执行访问远程文件然后进行保存,性能极差。

具体方法简单说明如下:

1.使用文件函数得到静态页面的模板字符串,然后用str_replace函数将需要替换的东西替换了再写入到新的文件中。

2. 利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中。

复制代码 代码如下:$filemodel="template/it.php";           //模板地址

$file=fopen($filemodel,"rb");           //打开模板,得到文件指针

$temp=fread($file,filesize($filemodel));    //得到模板文件html代码

方法一:ob_get_contents()

这是一种很方便的方法,也是很常用的方法,实现原理是:首先打开缓存,然后创建相应的静态页文件,写入缓存的内容,清空缓存。

示例:

复制代码 代码如下:ob_strart();//打开缓冲区

$fn=date("ymdhis").rand(1000,9999)."html";//生成文件名

require("supply.php");//载入要生成静态页的文件,因为后台有ob_clean()所以在不会显示出来

$fs=fopen($fn,"w");//打开静态页文件

fwrite($fs,ob_get_contents());//生成静态文件

ob_clean();//清空缓存

方法二:file_get_contents();复制代码 代码如下:$fn=date("ymdhis").rand(1000,9999)."html";

$url= "http://".$_SERVER["HTTP_HOST"]."/";//注意

$content=file_get_contents($url);

$fs=fopen($fn,"w");

fwrite($fs,$content);

下面对上面的注意进行一下解释,如果在些你使用的是仅仅是文件名,而不是URL那么您这个文件中如果有使用引用文件比如require ("header.php"); 那么header.php中的内容将会显示不出来。

方法三:str_replace()复制代码 代码如下:$filemodel="supply.php"; 字串5$file=fopen($filemodel,"w+");

$temp=fread($file,filesize($filemodel));

$temp=str_replace("[title]",$title,$temp);

$temp=str_replace("[postTime]",$postTime,$temp);

$temp=str_replace("[content]",$content,$temp);

该方法适用于很简单的页面,如果supply.php中有使用引用文件比如require ("header.php");那么header.php中的内容将会显示不出来

在实际应用中,您可以写一个生成静态页的类,

复制代码 代码如下:/*+++

|

| 使用方法

|   $shtml = new Shtml($Url,$FileBag,$FolderName,$fileid)

|   $Url:       页面 URL 地址

|   $FileBag:   文件夹标记   1 为:指定文件夹

|         2 为:默认文件夹(时间(年月日))

|        $FolderRoot html文件存放路径

|   $FolderName 指定文件夹的名称 $FileBag为2时 可以写为空("");

|   $fileid      静态页面名称(后缀 默认为 .html)

|

|

|

/*++*/

class Shtml

{

var $message1="Error    1: You write class Shtml is Wrong !   The second parameter is 1 or 2 in   this class!.";

var $message2="Error    2: The file write    Error.";

function __construct ($Url,$FileBag,$FolderRoot,$FolderName,$fileid)

{

$this->Url   = $Url;

$this->FileBag   = $FileBag;

$this->FileRoot = $FolderRoot;

$this->FileName = $FolderName;

$this->fileid    = $fileid;

Shtml::useFolder ();

}

/*************获取数据*******************/

public function loadcontent ($Folder)

{

ob_start();

require_once $this->Url;

Shtml::writehtml ($Folder,ob_get_contents());

ob_clean();

}

/********** 指定文件夹*****************/

public function useFolder ()

{

if($this->FileBag==1)

{

$Folder=$this->FileName;

}

else if($this->FileBag==2)

{

$Folder=date("Ymd",time());

}

else

{

exit($this->message1);

}

if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);}

Shtml::loadcontent ($Folder);

}

/********** 生成静态页面*****************/

public function writehtml ($Folder,$cache_value)

{

$file   = fopen($this->FileRoot.$Folder."/".$this->fileid.".html","w+");

fwrite($file,$cache_value);

fclose($file);

}

}

$fileid=2;

$shtml = new Shtml("//www.yinxi.net",1,"","cc",$fileid);

总结, 这个生成html程序代码没有生成分页了,如果文章很多它也只生成一篇文章,如果要改进我们需要进行比较大的改动了,在此就不介绍了。感兴趣的朋友可以动手测试改进一下,相信会有不小的收获!

希望本文所述对大家的PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值