ホームページ >バックエンド開発 >PHPチュートリアル >静的ページを生成する PHP メソッドと実装コードの詳細版_PHP チュートリアル

静的ページを生成する PHP メソッドと実装コードの詳細版_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:40:38778ブラウズ

PHPで使用される主なものはfread()とfwirte()です。静的ページが生成された後は、変更の問題が発生します。ここでは、通常のマッチング方法を使用して、テンプレートの変更された部分を置き換えることができます。ただし、この方法は面倒なので、最初に生成したテンプレートを直接切り取って再生成する方法をお勧めします。
もう 1 つ説明する必要があるのは、静的ページを生成するこの方法は、情報の最終ページなど、あまり頻繁に変更されないページに一般的に使用されるということです。リスト ページの場合は、情報があまり頻繁に更新されない場合にも推奨されます。インターネット上には、静的ページを生成できる人気のブログやフォーラム プログラムが数多くありますが、それらはすべてバックグラウンドで [HTML ページの生成] ボタンを手動でクリックすることで HTML を「半自動的に」生成します。ただし、非常に大量の情報を含む一部のポータル Web サイトでは、これは機能しません。静的ページは自動的に変更できないため、「静的」と呼ばれます。情報リストが 1 日に 100 回更新される場合、静的リスト ページは 100 回再生成されます。こんなコラムが10本もあったら、考えただけで血を吐きそうになります。
それでは、早速、実際のプログラムのデモを見てみましょう:
最初に: ob 関数を使用して実装されています。コードは比較的単純で、効率は比較的高くなります。

コードをコピーします コードは次のとおりです:

ob_start();
$text = ob_get_flush ();
$myfile = fopen("myfile.html","w");
$text =
str_replace ("{count}",$string,$text);
ob_clean() ;
?>


静的ページを生成したい場合でも、データをデータベースに挿入した後、その URL を渡してそれを読み取る必要があるためです。 fwrite はキャッシュに保存し、静的ページを生成できます。これは Tutu が最も高く評価している方法です。最小限のコード行で最高の効率を実現します。 http://tools.jb51.net/ は裸のページ、つまりヘッダー、末尾、メニューのない純粋なコンテンツです。このようにして、独自のテンプレート myfile.html をより自由にカスタマイズできます。静的ページの生成のみが必要な場合は、これで基本的にニーズが満たされます。
2 番目: 通常どおり静的 HTML ページを生成します。
この方法では、ステップバイステップでページを読み込み、str_replace に置き換えます。まず、最終的なコンテンツ ページを作成します:
PHP コード



コードをコピーします
コードは次のとおりです: $title = "http://siyizhu.com テスト テンプレート";
$file = "TwoMax インター テスト テンプレート、
author:[email=Matrix@Two_Max]Matrix@Two_Max[/email] ]";
$fp = fopen ( "temp.html","r");
$content = fread($fp,filesize ("temp.html"));
$content = str_replace("{file}" ,$file,$content);
$content = str_replace("{title}",$title,$content);
$filename = "test/test.html";
$handle = fopen ($filename,"w) "); //ファイルポインタを開き、ファイルを作成します
/* ファイルが作成され、書き込み可能かどうかを確認します*/
if (!is_writable ($filename))
{
die ("File: ".$filename." is書き込み可能ではありません。プロパティを確認して再試行してください! ");
}
if (!fwrite ($handle,$content))
{ //ファイルに情報を書き込みます
die ("Generate file".$filename."失敗しました!");
}
fclose ($ handle); //ポインタを閉じる
die ("Create file".$filename."Success!");
?>


このステップは比較的簡単です。単純な変数の置換の問題です。静的なリストページを生成する場合も、プログラムを使用して記事リストを生成し、それを大きな変数として扱い、テンプレート内の変数を置き換える方法は同じです。は。もちろん、情報が更新された場合には、一覧ページも再生成する必要があります。
PHP コード



コードをコピー
コードは次のとおりです:

$title = "http://";
$file = "TwoMax インター テスト テンプル、
author:[email=Matrix@Two_Max]Matrix@Two_Max[/email]"; $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content = str_replace ("{file}",$file, $content);
$content = str_replace ("{title}",$title,$content);
// リストの生成を開始します
$list = ''; ;
$query = mysql_query ($sql);
while($result = mysql_fetch_array ($query))
{
$list .= ''.$result['title'].'
';
}
$content .= str_replace("{articletable}",$list,$content);//リストの生成終了
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w");
// ファイルポインターを開き、ファイルを作成します* ファイルが作成され、書き込み可能かどうかを確認します*/
if(!is_writable ($filename))
{
die ("ファイル: ".$filename." は書き込み可能ではありません。プロパティを確認して再試行してください!") ;
}
if (!fwrite($handle,$content))
{ //ファイルに情報を書き込みます
die ("Generate file".$filename."Failed!")
}
fclose($handle); ; // ポインタを閉じます
die ("Create file".$filename."Success!");
?>


ページングを指定すると、1 ページに 20 個の記事が表示されます。データベース クエリによると、特定のサブチャネル リストには 45 個の記事があります。まず、クエリを通じて次のパラメータを取得します。1、ページの総数、2、ページごとの記事数。 2 番目のステップ、for ($i = 0; $i 例:
PHP コード



コードをコピーします
コードは次のとおりです。 $fp = fopen ("temp.html","r")
$content = fread ($fp,filesize ("temp.html") ));
$ onepage = '20';
$sql = "チャネル='$channelid' から ID を選択します"; $allpages = ceil ( $num / $onepage);
for ($i = 0;$i<$allpages; $i++)
{
if ($i == 0)
{
$indexpath = "index.html ";
}
else
{
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '';
$sql_for_page = "名前を選択、ファイル名,記事のタイトル where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page)
{
$list .= ''.$title.'
'
}
$content = str_replace("{articletable}") ,$list,$ content);
if (is_file ($indexpath))
{
@unlink ($indexpath) // ファイルが既に存在する場合は削除します
}
$handle = fopen ($indexpath,"w "); // ファイル ポインターを開き、ファイルを作成します
/*ファイルが作成され、書き込み可能かどうかを確認します*/
if (!is_writable ($indexpath))
{
echo "ファイル: ".$indexpath." は書き込み可能ではありません。 、プロパティを確認して、もう一度試してください。 "; //echo に変更します
}
if (!fwrite ($handle,$content))
{//ファイルへの情報の書き込み
echo "Generate file".$indexpath." "; //エコーに変更
}
fclose ($handle); //ポインタを閉じる
}
fclose ($fp);
die ("ページングファイルの生成が完了しました。生成が不完全な場合はファイルを確認してください許可システムを使用して再試行してください! ");
?>


3 番目: Smarty テンプレートは静的ページを生成します
smarty 自体にはフェッチ関数があり、その関数は fread() に似ており、静的ページの生成に使用できます。
この例は次のようになります。見覚えがあるでしょう、smarty マニュアルの fetch 関数の例は、公式の例と比較すると常に古典的です


コードをコピーします

コードは次のとおりです。

include(" Smarty.class.php");
$smarty = new Smarty; $smarty->caching = true // キャッシュが存在しない場合にのみ db 呼び出しを実行します if (!$smarty->is_cached("index.tpl")) {// データをダミーにします
$address = "245 N 50th";
$db_data = array("City" => "リンカーン", "州" => "ネブラスカ", "郵便番号" => "68502");
$smarty->assign("住所"); $address);
$smarty->assign($db_data);
}// 出力をキャプチャします
$output = $smarty->fetch("index.tpl"); / ここで $output を使って何かをします
echo $output ; //ほほ、出力結果を見ましたか? fwrite の後、必要な結果が得られます
$fp = fopen("archives/2005/05/19 /0001.html", "w") ;
fwrite($fp, $content);
fclose($fp);
?>


PHP コード
コードをコピー コードは次のとおりです:

ob_start();
echo "Hello World!"
$content = ob_get_contents();// PHP ページの出力 Content
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content); >


http://www.bkjia.com/PHPjc/321292.html

tru​​ehttp://www.bkjia.com/PHPjc/321292.html技術記事 PHPで使用される主なものはfread()とfwirte()です。静的ページが生成された後は、変更の問題が発生します。ここでは、通常のマッチング方法を使用して、テンプレートの変更を置き換えることができます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。