1. ob 関数の概要
1.1, ob_start - 出力制御バッファーをオンにする
bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )この関数は出力バッファを開きます。出力バッファリングがアクティブ化されている場合、スクリプトはコンテンツ (http ヘッダーを除く) を出力せず、代わりに出力されるコンテンツは内部バッファーに保存されます。
詳細については、以下を参照してください:
1.2、ob_get_contents - 出力バッファの内容を返します
string ob _get_contents (void)ただ出力バッファの内容を取得しますが、クリアしません。
詳細については、以下を参照してください:
1.3 - 出力バッファの内容をフラッシュして(送信して)バッファを閉じます
bool ob_end_flush (void)この関数は、トップレベルのバッファーの内容を送信し (コンテンツがある場合)、バッファーを閉じます。バッファの内容をさらに処理したい場合は、ob_end_flush() を呼び出した後にバッファの内容が破棄されるため、ob_end_flush() の前に ob_get_contents() を呼び出す必要があります。
詳細は参照:
1.4, ob_flush - 出力バッファーの内容をフラッシュアウト(送信)します
void ob_flush (void)この関数は、バッファーの内容を送信します (バッファー内にコンテンツがある場合)。バッファの内容をさらに処理したい場合は、ob_flush() を呼び出した後にバッファの内容が破棄されるため、ob_flush() の前に ob_get_contents() を呼び出す必要があります。
この関数は出力バッファを破壊しませんが、ob_end_flush() のような関数はバッファを破壊します。
詳細は参照:
1.5、ob_get_clean - 現在のバッファーの内容を取得し、現在の出力バッファーを削除します
string ob_get_clean (void)現在のバッファーの内容を取得し、現在の出力バッファーを削除します。
ob_get_clean() は基本的に ob_get_contents() と ob_end_clean() を一緒に実行します。
詳細は参考: 1.6、ob_get_flush - バッファの内容を文字列形式でフラッシュ(送信)します。そして出力バッファリング地区を閉じます
string ob_get_flush (void )ob_get_flush() は、バッファの内容をフラッシュ (送信) し、内容を文字列として返し、出力バッファを閉じます。
注: この関数は、バッファーの内容も文字列形式で返す点を除いて、ob_end_flush() に似ています。
詳細は参考:
2. ob()の使い方HTMLの静的ページを作成する関数
2.1、単純な出力 HTML ファイル
ob_start(); //Openバッファ$info = 'こんにちは! ! ';
$file=fopen('index.html','w'); //ファイルを開きますindex.html
fwrite($file,$info); //index.html
fclose($file); ;
2.2. データベース情報を取得し、HTML ファイルを出力します require_once 'coon.php';$sql = "select * from name order by id;";$result = $link->query($sql);$arr = array();while($ re = $result->fetch(PDO::FETCH_ASSOC)){ $arr[] = $re;} //出力内容を HTML ファイルにループしますob_start() //バッファを開きます ? >< ;!-- 以下は出力内容です-->
id< /td> | 名前 | pwd |
{$value['id']} | ";$value[ 'name']} | ";{$value['pwd']} | ";
$content = ob_get_contents();//現在のバッファの内容を取得します
ob_end_clean() ;//現在の出力バッファを削除
file_put_contents('index2.html',$content);//ファイルを書き込む
?>
結果をindex2.htmlに出力する
出力制御関数はたくさんありますが、最初にこれらを紹介します 2.3 指定された内容が確実に得られるように読み取り方法を最適化します。ファイルが正しく読み込まれています
<?php $fileName = 'index2.html'; $re = file_exists($fileName);//判断文件是否存在 $dValue = 0;if($re){ $fileTime = filectime($fileName);//时间戳 $dValue = time() - $fileTime;//获取创建时间,文件缓存一般存在有效期}if(file_exists($fileName) && $dValue < 3600){ $content = file_get_contents($fileName); echo $content; die;}else{if($re){ unlink($fileName);//过去先删除,} require_once 'coon.php'; $sql = "select * from name order by id;"; $result = $link->query($sql); $arr = array();while($re = $result->fetch(PDO::FETCH_ASSOC)){ $arr[] = $re;} //循环输出内容到html文件 ob_start(); //打开缓冲区 ?><!-- 下面是输出的内容 --><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>循环输出的html内容</title></head> <body> <table> <thead> <tr> <td>id</td><td>name</td> <td>pwd</td></tr> </thead><tbody><?php foreach ($arr as $key => $value) { echo "<tr>"; echo "<td>{$value['id']}</td>"; echo "<td>{$value['name']}</td>"; echo "<td>{$value['pwd']}</td>"; echo "</tr>";}?></tbody> </table></body> </html><?php $content = ob_get_contents();//得到当前缓冲区的内容ob_end_clean();//删除当前输出缓file_put_contents('index2.html',$content);//写入文件}?>
ログイン後にコピー
2. セキュリティ、動的ウェブサイト開発言語は絶対に安全ではありませんが、静的ウェブページにはサーバーがハッキングされることを除いてプログラムに抜け穴はありません