PHP动态页生成静态页的3种常用方法
《PHP动态页生成静态页的3种常用方法》要点: PHP实战生成静态页的页面非常的简单就是定义好模板与模板标题,之后利用str_replace进行替换了,是最常用的方法,另一种是利用ob_get_contents输出获得然后生成html,还有一种不怎么推荐的是使用file_get_contents直接执行拜访远程文件然后进行保存,性能极差. PHP实战具体办法简单说明如下:
代码如下:
$filemodel="template/it.php";?????????? //模板地址
$file=fopen($filemodel,"rb");?????????? //打开模板,得到文件指针 $temp=fread($file,filesize($filemodel));??? //得到模板文件html代码 PHP实战办法一:ob_get_contents() PHP实战这是一种很方便的办法,也是很常用的办法,实现原理是:首先打开缓存,然后创建相应的静态页文件,写入缓存的内容,清空缓存.
代码如下:
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();//清空缓存 PHP实战办法二: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中的内容将会显示不出来. 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,$FolderRoot,$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("",1,"","cc",$fileid); 总结,这个生成html程序代码没有生成分页了,如果文章很多它也只生成一篇文章,如果要改进我们需要进行比较大的改动了,在此就不介绍了.感兴趣的朋友可以动手测试改进一下,相信会有不小的收获! PHP实战希望本文所述对大家的PHP程序设计有所帮助. 编程之家培训学院每天发布《PHP动态页生成静态页的3种常用方法》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |