ホームページ  >  記事  >  バックエンド開発  >  PHP静的ページ生成の2つの方法の分析

PHP静的ページ生成の2つの方法の分析

WBOY
WBOYオリジナル
2016-07-25 08:59:31832ブラウズ
  1. // 方法 1、テンプレートに基づいて静的ページを生成します

  2. // replaceTemplateString 関数は、テンプレート内の指定された文字列を置換するために使用されます
  3. function replaceTemplateString($templateString ) {
  4. // 変数を使用して置換します
  5. $title = "記事のタイトル";
  6. $body = "ここが記事の本文です";
  7. // テンプレートで指定された文字列を置換します
  8. $showString = str_replace ( "% title%", $title, $templateString );
  9. $showString = str_replace ( "%body%", $body, $showString );
  10. // 置換結果を返す
  11. return $showString;
  12. }

  13. $template_file = " template.html";

  14. $new_file = "new.html";
  15. // テンプレート ファイル ポインター
  16. $template_juBing = fopen ( $template_file, "r" );
  17. // テンプレート ファイル ポインターgenerated
  18. $newFile_juBing = fopen ( $ new_file, "w" );

  19. // 方法 1、テンプレートのコンテンツ文字列全体を取得し、置き換えて新しいファイルに割り当てます

  20. $templateString = fread ( $template_juBing, filesize ( $template_file ) ) ;
  21. $showString = replaceTemplateString ( $templateString ); // テンプレート内の文字列を置換します
  22. fwrite ( $newFile_juBing, $showString ); // 置換されたコンテンツを生成された HTML に書き込みますfile

  23. // 方法 2、ループ内のテンプレート コンテンツ文字列の各行を読み取り、置き換えて新しいファイルに順番に追加します
  24. while ( ! feof ( $template_juBing ) ) { // feof() 関数は、ファイルの終わりに到達したかどうかを検出します。ファイルポインタが末尾に達するか、エラーが発生した場合は TRUE を返します。それ以外の場合は、FALSE を返します (ソケットのタイムアウトやその他の状況を含む)。
  25. $templateString = fgets ( $template_juBing ); // fgets(file,length) はファイル ポインターから行を読み取り、改行を含む最大 length - 1 バイトの長さの文字列を返します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。
  26. $showString = replaceTemplateString ( $templateString );
  27. fwrite ( $newFile_juBing, $showString ); // 開かれたポインター ファイルに初めてコンテンツを書き込むとき、ファイル ポインターの前にあるポインター ファイル内の元のコンテンツが置き換えられます。 fwrite 関数がコンテンツを追加すると、追加されたコンテンツの後にファイル ポインターが閉じられます
  28. }
  29. */
  30. //
  31. fclose ( $newFile_juBing );
  32. fclose ( $template_juBing ); 通常、静的ページとの関係は、データベースに情報を追加すると、その情報の静的ページが生成されるため、将来の変更を容易にするために、データベース テーブルにフィールドを追加して、対応する静的ページのパス ファイル名を保存することをお勧めします。 ;
  33. テンプレートの置換

  34. 一般的に、静的 HTML ページのテンプレートを変更する必要がある場合、通常のアプローチは、生成された HTML ページをすべて削除してから、新しい HTML ページを再作成することです。 (またはすべて再生成されます)

  35. 静的ページでの動的操作

  36. 場合によっては、作成された静的 HTML ページでもいくつかの動的操作を実行する必要があります。たとえば、ニュース システムの各ニュース記事では、クリック率をカウントする必要があります。
  37. 幅と高さが 0 ピクセルの画像コントロールを使用して PHP ページを非表示にし、ページ カウンター関数を実装できます (
  38. リンク ディレクトリの静的ページ

  39. 通常、静的ページを使用するシステムでは、訪問者が閲覧するためのリンク リストのディレクトリ ページ用に静的 HTML ファイルが生成されることがよくあります
  40. 注これは、データベース情報を追加または削除するたびにリンク リストに影響を与えるため、データベース情報が追加または削除されるたびに、リンク ディレクトリの静的ページを更新する必要があります。
  41. ページングの設計は、リンクされたディレクトリを含む複数の静的ページを作成することで完了できます。
  42. */

  43. // メソッド 2、バッファに基づいて生成

  44. ob_start (); // バッファがアクティブ化され、ob_end_clean() がある場合、ファイル以外の出力がすべて出力されます。ヘッダー情報はページには印刷されませんが、内部バッファーに保存されます。 ob_end_clean() がない場合、情報は内部バッファに保存され、出力されます
  45. ?>
  46. コードをコピー

これは出力制御のテストです

  1. echo "
    これはテスト出力コントロールです
    ";

  2. include_once 'cache/newFile.php';

  3. < p>$contents = ob_get_contents (); // これまでにバッファに保存されている情報を取得します。バッファには、ページ ブラウザに出力および印刷されるコンテンツのみが保存されます。 // $contents は保存されません。 = ob_get_clean( ); // これまでのバッファに格納されている情報を取得し、クリア バッファをクローズします

  4. // ob_end_flush();// これまでのプリント バッファに格納されている情報を出力し、クローズしますit バッファーのクリア

  5. ob_end_clean (); // バッファーの内容のクリアをオフにする

  6. file_put_contents ( $new_file, $contents ) // ファイル Content

  7. に書き込みます?> ;

コードをコピーします
2. テンプレート ファイル template.html

  1. < ;html>
  2. %title%
  3. %title%


  4. %body%
  5. < /html>
コードをコピー

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