ホームページ  >  記事  >  バックエンド開発  >  PHP 動的ページから静的ページを生成する 3 つの一般的な方法、3 種類の php 動的ページと静的ページ_PHP チュートリアル

PHP 動的ページから静的ページを生成する 3 つの一般的な方法、3 種類の php 動的ページと静的ページ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:14:09696ブラウズ

PHP動的ページから静的ページを生成する3つの一般的な方法、3種類のPHP動的ページと静的ページ

静的ページの生成は非常に簡単で、テンプレートとテンプレートのタイトルを定義し、それを str_replace を使用して置き換えます。もう 1 つは、ob_get_contents 出力を使用して HTML を取得して生成する方法です。これもあまり推奨されない方法です。file_get_contents を使用してリモート ファイルに直接アクセスし、保存すると、パフォーマンスが非常に低下します。

具体的な方法を簡単に説明すると以下の通りです
1. file 関数を使用して静的ページのテンプレート文字列を取得し、str_replace 関数を使用して置換する必要があるものを置換し、それを新しいファイルに書き込みます。
2. PHP の出力制御関数 (Output Control) を使用して静的ページ文字列を取得し、それを新しいファイルに書き込みます。

コードをコピーします コードは次のとおりです:
$filemodel="template/it.php" //テンプレートアドレス
$file=fopen($filemodel,"rb"); // テンプレートを開いてファイル ポインターを取得します
$temp=fread($file,filesize($filemodel)); //テンプレートファイルのHTMLコードを取得します

方法 1: 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();//キャッシュをクリアします

方法 2: 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 の内容は表示されません。表示される。

方法 3: str_replace()

コードをコピーします コードは次のとおりです:
$filemodel="supply.php"; String 5$file=fopen($filemodel,"w+");
$temp=fread($file,filesize($filemodel));
$temp=str_replace("[タイトル]",$title,$temp);
$temp=str_replace("[postTime]",$postTime,$temp);
$temp=str_replace("[コンテンツ]",$content,$temp);

このメソッドは、supply.php に require ('header.php'); などの参照ファイルがある場合、header.php の内容は表示されません。 実際のアプリケーションでは、静的ページを生成するクラスを作成できます

コードをコピーします コードは次のとおりです:
/*+++
|
| 使い方
| $shtml = 新しい Shtml($Url,$FileBag,$FolderName,$fileid)
| $Url: ページの URL アドレス
| $FileBag: フォルダータグ 1 の意味: フォルダーを指定します
| 2 は: デフォルトのフォルダー (時間 (年、月、日))
| $FolderRoot HTML ファイルの保存パス
| $FolderName は、$FileBag が 2 の場合、空 (""); と書くことができます。 | $fileid 静的ページ名 (デフォルトのサフィックスは .html)
|
|
|
/*++*/
クラスShtml
{
var $message1="エラー 1: クラス Shtml の記述が間違っています! このクラスでは 2 番目のパラメーターは 1 または 2 です!.";
var $message2="エラー 2: ファイル書き込みエラー。";
関数 __construct ($Url,$FileBag,$FolderRoot,$FolderName,$fileid)
{
$this->URL = $Url;
$this->FileBag = $FileBag;
$this->FileRoot = $FolderRoot;
$this->ファイル名 = $フォルダー名;
$this->fileid = $fileid;
Shtml::useFolder ();
}
/*************データの取得*******************/
パブリック関数loadcontent ($Folder)
{
ob_start();
require_once $this->URL;
Shtml::writehtml ($Folder,ob_get_contents());
ob_clean();
}
/**********フォルダを指定*******************/
パブリック関数 useFolder()
{
if($this->FileBag==1)
{
$Folder=$this->ファイル名;
}
else if($this->FileBag==2)
{
$Folder=date('Ymd',time());
}
それ以外
{
exit($this->message1);
}
if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);}
Shtml::loadcontent ($Folder);
}
/********** 静的ページの生成*****************/
パブリック関数 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);
要約すると、この HTML 生成プログラム コードは、記事が多数ある場合にページネーションを生成しません。これを改善するには、大きな変更を加える必要がありますが、ここでは紹介しません。興味のある友人がテストして改善していただければ、大きな成果が得られると信じています。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/910598.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/910598.html技術記事 PHP 動的ページから静的ページを生成する 3 つの一般的な方法 PHP 動的ページと静的ページから静的ページを生成する 3 つの一般的な方法 テンプレートとテンプレート タイトルを定義し、それを str_replace を使用して置き換えるのは非常に簡単です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。