ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルで静的ページを生成する方法
1. PHPスクリプトと動的ページ。
PHP スクリプトは、埋め込みなどの方法で HTML ファイルと混合したり、クラスや関数のカプセル化などの形式のテンプレートの形式でユーザーのリクエストを処理したりできる、サーバー側のスクリプト プログラムです。いずれにせよ、基本はこれです。クライアントが特定のページをリクエストします -----> WEB サーバーは、指定された対応するスクリプトを処理に導入します -----> スクリプトはサーバーにロードされます -----> 指定された PHP 解析サーバーによってスクリプトはブラウザによって解析され、HTML 言語形式が形成されます----> 解析された HTML ステートメントはパッケージの形式でブラウザに返されます。このことから、ページがブラウザに送信された後は PHP が存在せず、HTML ステートメントに変換および解析されたことがわかります。実際、クライアントのリクエストは動的ファイルであり、PHP はそれを対応するページに解析してブラウザに送り返します。このページの処理方法は「動的ページ」と呼ばれます。
2つ目、静的ページ。
静的ページとは、サーバー側に実際に存在し、HTML と JS、CSS、その他のクライアント側スクリプトのみを含むページを指します。扱い方としては。クライアントは特定のページをリクエストします---> WEB サーバーは特定のページを確認してロードします---> WEB サーバーはそのページをパッケージの形式でブラウザに返します。このプロセスから、動的ページを比較して確認できます。動的ページは WEB サーバーの PHP パーサーで解析する必要があり、通常、HTML 言語情報パッケージを形成する前にデータベースに接続してデータベース アクセス操作を実行する必要がありますが、静的ページは解析したり接続したりする必要はありません。データベースに直接送信できるため、サーバーの負荷が大幅に軽減され、サーバーの負荷容量が向上し、ページを開く速度と Web サイト全体を開く速度が大幅に向上します。ただし、その欠点は、リクエストを動的に処理できないことと、ファイルが実際にサーバー上に存在する必要があることです。
3つ目、テンプレートとテンプレート分析。
テンプレートは、コンテンツのhtmlファイルがまだ入力されていないことを意味します。例:
temp.html
コード:[クリップボードにコピー]
これは { file } ファイルのテンプルです
PHP処理:
templetest.php
コード:[クリップボードにコピー]
$title = "Tomax インターナショナル テスト テンプレート";
$file = "TwoMax Inter テスト テンプレット,
著者:Matrix@Two_Max";
$fp = fopen("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
echo $content;
?>
テンプレート解析処理とは、PHPスクリプトを解析・処理して得られた結果をテンプレートに埋め込む処理です。通常はテンプレート クラスの助けを借ります。現在、より一般的なテンプレート解析クラスには、phplib、smarty、fastsmarty などが含まれます。テンプレート解析処理の原則は、通常、置換です。また、判定やループなどの処理をテンプレートファイルに入れて解析クラスで処理することに慣れているプログラマもいますが、その典型的な応用が単純にループ処理であるブロック概念です。 PHP スクリプトはループの数、ループの方法などを指定し、テンプレート解析クラスがこれらの操作を実装します。 70-305 920-203 920-533
それでは、静的ページと動的ページの長所と短所を比較した後、PHP を使用して静的ファイルを生成する方法について説明します。
PHP による静的ページの生成とは、PHP の動的解析と HTML ページの出力を指すのではなく、PHP を使用して HTML ページを作成することを指します。同時に、HTML は書き込み不可能な性質があるため、作成した HTML が変更された場合は、削除して再生成する必要があります。 (もちろん、通常のルールを使用して変更することもできますが、個人的には、削除して再生成するよりも高速であると考えており、メリットはありません。)
仕事に戻ります。 PHP のファイル操作関数を使用したことのある PHP ファンは、PHP にファイルを開くファイル操作関数 fopen があることを知っています。ファイルが存在しない場合は、作成してみてください。これは、PHP を使用して HTML ファイルを作成できる理論的基礎です。 HTML ファイルの保存に使用されるフォルダーに書き込み権限 (つまり、権限定義 0777) がある限り、ファイルを作成できます。 (UNIX システムの場合、Win システムは考慮する必要はありません。) 上記の例を例として、最後の文を変更して test ディレクトリに test.html という名前の静的ファイルを生成するように指定すると、 HP0-538 HP0- 757
コード:[クリップボードにコピー]
$title = "Tomax インターナショナル テスト テンプレート";
$file = "TwoMax Inter テスト テンプレット,
著者:Matrix@Two_Max";
$fp = fopen("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w") //ファイルポインタを開いてファイルを作成します
;/*
ファイルが作成され、書き込み可能かどうかを確認してください
*/
if (!is_writable ($filename)){
die ("ファイル: ".$filename." を書き込むことができません。プロパティを確認してもう一度お試しください!");
}
if (!fwrite ($handle,$content)){ //ファイルに情報を書き込みます
die ("ファイルの生成".$filename."失敗!");
}
fclose ($handle); //ポインタを閉じる
die ("ファイルの作成".$filename."成功!");
?>
実際のアプリケーションにおける一般的な問題の解決策のリファレンス:
1. 記事リストの質問:
データベースにフィールドを作成し、ファイル名を記録します。推奨記事の場合は、静的ファイルが保存されている指定されたフォルダー内のページをポイントするだけです。 。 PHP 操作を使用して記事リストを処理し、文字列として保存し、ページの生成時にこの文字列を置き換えます。たとえば、ページ上の記事リストが配置されるテーブルと PHP 処理ファイルにマーク {articletable} を追加します: 000-297 1z0-147
コード:[クリップボードにコピー]
$title = "Tomax インターナショナル テスト テンプレート";
$file = "TwoMax Inter テスト テンプレット,
著者:Matrix@Two_Max";
$fp = fopen("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// リスト生成開始
$list = '';
$sql = "記事からID、タイトル、ファイル名を選択";
$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 ("ファイルの生成".$filename."失敗!");
}
fclose ($handle); //ポインタを閉じる
die ("ファイルの作成".$filename."成功!");
?>
第二に、ページングの問題。
ページネーションを指定すると、1ページあたり20記事になります。データベース クエリ後の特定のサブチャネル リストには 45 個の記事があります。まず、クエリを通じて次のパラメータを取得します。1、ページの総数、2、ページごとの記事数。 2 番目のステップ、for ($i = 0; $i コード:[クリップボードにコピー]
$fp = fopen("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $onepage = '20'; $sql = "channel='$channelid'の記事からIDを選択"; $query = mysql_query($sql); $num = mysql_num_rows ($query); $allpages = ceil ($num / $onepage); for ($i = 0;$i
if ($i == 0){ $indexpath = "index.html"; } 他 { $indexpath = "index_".$i."html"; } $start = $i * $onepage; $list = ''; $sql_for_page = "channel='$channelid' 制限 $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."Failed!" //echo } fclose ($handle); //ポインタを閉じる } fclose ($fp); die (「ページングファイルの生成が完了しました。生成が不完全な場合は、ファイルパーミッションシステムを確認して再生成してください!」); ?> 一般的なアイデアは次のとおりです。その他のデータ生成、データの入出力チェック、ページ分割コンテンツのポインティングなどを必要に応じてページに追加できます。 実際の記事システムの処理プロセスでは、考慮すべき点がまだ多く、動的ページとの違いには注意が必要です。しかし、一般的な考え方はこれであり、他の側面も類推して導き出すことができます。
';