加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP生成静态页面有哪些方法,哪种比较好?

发布时间:2023-07-01 15:04:40 所属栏目:PHP教程 来源:
导读:关于“PHP生成静态页面有哪些方法,哪种好?”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就
关于“PHP生成静态页面有哪些方法,哪种好?”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。
 
生成静态页的页面非常的简单就是定义好模板与模板标题,之后利用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.jb51.net",1,"","cc",$fileid);
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!