ホームページ  >  記事  >  バックエンド開発  >  PHP で静的ページを生成する 3 つの方法とコードの詳細

PHP で静的ページを生成する 3 つの方法とコードの詳細

WBOY
WBOYオリジナル
2016-07-25 09:05:48930ブラウズ
  1. ob_start();
  2. @readfile("http://bbs.it-home.org/");
  3. $text = ob_get_flush();
  4. $myfile = fopen("myfile .html","w");
  5. $text =
  6. str_replace ("{counent}",$string,$text);
  7. fwrite($myfile,$text);
  8. ob_clean();
  9. ?>
コードをコピー

静的ページを生成したい場合でも、データベースにデータを挿入した後、URLをreadfile関数に渡してキャッシュに読み込み、 fwrite を使用して静的ページを生成します。これは Tutu が最も高く評価している方法です。最小限のコード行で最高の効率を実現します。 http://bbs.it-home.org/ は裸のページ、つまりヘッダー、末尾、メニューのない純粋なコンテンツです。このようにして、独自のテンプレート myfile.html をより自由にカスタマイズできます。静的ページの生成のみが必要な場合は、これで基本的にニーズが満たされます。

2. 通常は静的な HTML ページを生成します。 受信ページを読み取り、それを str_replace に置き換えます まず、最終的なコンテンツ ページを作成します。

  1. $title = "http://siyizhu.com テスト テンプレート";
  2. $file = "TwoMax インター テスト テンプレート、
    作成者: [email=Matrix@Two_Max]Matrix @Two_Max[/email]";
  3. $fp = fopen ("temp.html","r");
  4. $content = fread($fp,filesize ("temp.html"));
  5. $content = str_replace( "{file}",$file,$content);
  6. $content = str_replace("{title}",$title,$content);
  7. $filename = "test/test.html";
  8. $handle = fopen ( $filename,"w"); // ファイル ポインターを開き、ファイルを作成します
  9. /* ファイルが作成され、書き込み可能かどうかを確認します*/
  10. if (!is_writable ($filename))
  11. {
  12. die ("File:" .$ filename."書き込み可能ではありません。プロパティを確認して再試行してください!");
  13. }
  14. if (!fwrite ($handle,$content))
  15. { //ファイルに情報を書き込みます
  16. die ("ファイルを生成" .$ filename."Failed!");
  17. }
  18. fclose ($handle); //ポインタを閉じる
  19. die ("Create file".$filename."Success!");
  20. ?>
コードをコピー

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

  1. $title = "http://";
  2. $file = "TwoMax インター テスト テンプレート、
    著者:[email=Matrix@Two_Max]Matrix@Two_Max[/email] ]";
  3. $fp = fopen ("temp.html","r");
  4. $content = fread ($fp,filesize ("temp.html"));
  5. $content = str_replace ("{file}" ,$file,$content);
  6. $content = str_replace ("{title}",$title,$content);
  7. //リスト生成開始
  8. $list = '';
  9. $sql = "select id,title,記事のファイル名";
  10. $query = mysql_query ($sql);
  11. while($result = mysql_fetch_array ($query))
  12. {
  13. $list .= ''.$result['title'].'
    ';
  14. }
  15. $content .= str_replace("{articletable}",$list,$content );//リスト生成終了
  16. // echo $content;
  17. $filename = "test/test.html";
  18. $handle = fopen ($filename,"w");
  19. //ファイルポインタを開いて作成the file
  20. /* ファイルが作成され、書き込み可能かどうかを確認します*/
  21. if(!is_writable ($filename))
  22. {
  23. die ("File: ".$filename." は書き込み可能ではありません。プロパティを確認して再試行してください) !");
  24. }
  25. if(!fwrite($handle,$content))
  26. { //ファイルに情報を書き込みます
  27. die ("Generate file".$filename."Failed!");
  28. }
  29. fclose( $handle); //ポインタを閉じる
  30. die ("Create file".$filename."Success!");
  31. ?>
コードをコピー

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

  1. $fp = fopen ("temp.html","r");
  2. $content = fread ($fp,filesize) ("temp.html"));
  3. $onepage = '20';
  4. $sql = "channel='$channelid' の記事から ID を選択";
  5. $query = mysql_query ($sql);
  6. $num = mysql_num_rows ($query);
  7. $allpages = ceil ($num / $onepage);
  8. for ($i = 0;$i<$allpages; $i++)
  9. {
  10. if ($i == 0)
  11. {
  12. $ Indexpath = "index.html";
  13. }
  14. else
  15. {
  16. $indexpath = "index_".$i."html";
  17. }
  18. $start = $i * $onepage;
  19. $list = '';
  20. $ sql_for_page = "channel='$channelid' 制限 $start,$onepage の記事から名前、ファイル名、タイトルを選択";
  21. $query_for_page = mysql_query ($sql_for_page);
  22. while ($result = $query_for_page)
  23. {
  24. $list .= ''.$title.'
    ';
  25. }
  26. $content = str_replace ("{articletable}",$list,$content);
  27. if (is_file ($indexpath))
  28. {
  29. @unlink ($indexpath) //ファイルが既に存在する場合は削除します
  30. }
  31. $handle = fopen ( $indexpath,"w"); // ファイル ポインターを開き、ファイルを作成します
  32. /*ファイルが作成され、書き込み可能かどうかを確認します*/
  33. if (!is_writable ($indexpath))
  34. {
  35. echo "File: " .$indexpath ."書き込み可能ではありません。プロパティを確認して再試行してください!" //echo
  36. }
  37. if (!fwrite ($handle,$content))
  38. {//ファイルに情報を書き込みます
  39. echo ";ファイル「 .$indexpath.」の生成に失敗しました。 "; //echo
  40. }
  41. fclose ($handle); //ポインタを閉じる
  42. }
  43. fclose ($fp);
  44. die ("ページングファイルの生成が完了しました。生成が不完全な場合はファイルを確認してください許可システムを変更して再試行してください! ");
  45. ?>
コードをコピーします

3. Smarty テンプレートは静的ページを生成します smarty には fread() に似た独自のフェッチ関数があり、静的ページの生成に使用できます。 Smarty テクノロジーに関しては、ここでいくつかの記事を読むことができます。 1)smartyの基本設定 2) Smarty キャッシング関連のアプリケーション 3) Smartyを使って静的ページを生成する方法 4) PHP テンプレート エンジン Smarty の詳細な紹介

  1. include("Smarty.class.php");
  2. $smarty = new Smarty;
  3. $smarty->caching = true;
  4. / / キャッシュが存在しない場合にのみ db 呼び出しを実行します
  5. if(!$smarty->is_cached("index.tpl"))
  6. {// データをダミーに作成します
  7. $address = "245 N 50th";
  8. $db_data = array("都市" => "リンカーン", "州" => "ネブラスカ", "郵便番号" => "68502");
  9. $smarty->assign("名前","フレッド") ;
  10. $smarty->assign("Address",$address);
  11. $smarty->assign($db_data);
  12. }// 出力をキャプチャします
  13. $output = $smarty->fetch("index. tpl");
  14. //ここがキーです//ここで $output を使って何かをしてください
  15. echo $output; //ほほう、出力の結果は見たことがありますか?それではどうでしょうか? fwrite の後、必要な結果が得られます。
  16. $fp = fopen("archives/2013/05/19/0001.html", "w");
  17. fwrite($fp, $content);
  18. fclose($fp);
  19. ?>
コピーコード
コードをコピー コードは次のとおりです。

  1. ob_start();
  2. echo "Hello World!";
  3. $content = ob_get_contents();//php ページによって出力されたすべてのコンテンツを取得します
  4. $fp = fopen(" archives/ 2013/05/19/0001.html", "w");
  5. fwrite($fp, $content);
  6. fclose($fp);
  7. ?>
コードをコピー

追記: 静的ページを生成できるブログまたはフォーラム プログラムは、バックグラウンドで [HTML ページの生成] ボタンを手動でクリックすることで HTML を「半自動的に」生成します。

興味がありそうな記事: 静的ページ関数を生成するPHPの例(php2html) PHPで静的ページを生成する方法(3つの関数) phpでhtml静的ページを生成する方法のリファレンス 静的ページを生成するためにphpで書かれたクラス データベース内のすべてのコンテンツから HTML 静的ページを生成するコード 仮想ホスト上に静的ページを定期的に自動生成する方法 phpを使用した静的ページの生成に関する詳細なチュートリアル Apacheで擬似静的ページにアクセスできない問題の解決策 静的ページのスパイダークローリングレコードについてphpによって書かれたコード smartyを使用して静的ページを生成する方法 PHPで静的ページを生成する方法 Apacheが擬似静的ページにアクセスできない問題の解決策



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。