3 common ways to generate static pages from PHP dynamic pages, 3 types of php dynamic and static pages_PHP tutorial

WBOY
Release: 2016-07-13 10:14:09
Original
697 people have browsed it

3 common ways to generate static pages from PHP dynamic pages, 3 types of PHP dynamic and static pages

Generating a static page is very simple, just define the template and template title, and then use str_replace to replace it. This is the most common method. The other is to use the ob_get_contents output to obtain and then generate html. There is another method that is not recommended. The only way is to use file_get_contents to directly access the remote file and then save it, which has extremely poor performance.

The specific method is briefly explained as follows:
1. Use the file function to get the template string of the static page, then use the str_replace function to replace what needs to be replaced and then write it to a new file.
2. Use PHP's output control function (Output Control) to obtain the static page string, and then write it to a new file.

Copy code The code is as follows:
$filemodel="template/it.php"; //Template address
$file=fopen($filemodel,"rb"); //Open the template and get the file pointer
$temp=fread($file,filesize($filemodel)); //Get the template file html code

Method 1: ob_get_contents()

This is a very convenient method and a very common method. The implementation principle is: first open the cache, then create the corresponding static page file, write the cache content, and clear the cache.
Example:

Copy code The code is as follows:
ob_strart();//Open buffer
$fn=date('ymdhis').rand(1000,9999).'html';//Generate file name
require("supply.php"); //Load the file to generate a static page. Because there is ob_clean() in the background, it will not be displayed
$fs=fopen($fn,'w');//Open static page file
fwrite($fs,ob_get_contents());//Generate static files
ob_clean();//Clear cache

Method 2: file_get_contents();

Copy code The code is as follows:
$fn=date('ymdhis').rand(1000,9999).'html';
$url= 'http://'.$_SERVER['HTTP_HOST']."/";//Note
$content=file_get_contents($url);
$fs=fopen($fn,'w');
fwrite($fs,$content);

Let's explain the above note. If you are using only the file name instead of the URL, then if you use a reference file in this file, such as require ('header.php'); then in header.php The content will not be displayed.

Method 3: str_replace()

Copy code The code is as follows:
$filemodel="supply.php"; String 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);

This method is suitable for very simple pages. If there is a reference file in supply.php such as require ('header.php'); then the content in header.php will not be displayed
In practical applications, you can write a class that generates static pages,
Copy code The code is as follows:
/*+++
|
| How to use
| $shtml = new Shtml($Url,$FileBag,$FolderName,$fileid)
| $Url: Page URL address
| $FileBag: Folder tag 1 means: specify the folder
| 2 is: default folder (time (year, month, day))
|        $FolderRoot html file storage path
| $FolderName specifies the name of the folder. When $FileBag is 2, it can be written as empty ("");
| $fileid Static page name (suffix defaults to .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 ();
}
/***************Get data*******************/
public function loadcontent ($Folder)
{
ob_start();
require_once $this->Url;
Shtml::writehtml ($Folder,ob_get_contents());
ob_clean();
}
/**********Specify folder*******************/
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);
}
/********** Generate static page*****************/
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("http://www.bkjia.com",1,"","cc",$fileid);

In summary, this program code for generating html does not generate pagination. If there are many articles, it will only generate one article. If we want to improve it, we need to make major changes, which will not be introduced here. Interested friends can test and improve it, I believe there will be great gains!

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/910598.htmlTechArticle3 common ways to generate static pages from PHP dynamic pages, 3 kinds of php dynamic and static pages to generate static pages are very useful Simply define the template and template title, and then use str_replace to replace it...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template