ob_get_contents();
ob_end_clean();
ob_start()
ob_start() を使用して、出力をブラウザではなくバッファに出力します。
次に、ob_get_contents を使用してバッファー データを取得します。
ob_start() はサーバー上のバッファを開き、すべての出力を保存します。そのため、echo が使用されるたびに、プログラムが終了するか、ob_flush() を使用して終了されるまで、出力はバッファーに追加されます。次に、サーバー内のバッファの内容がブラウザに送信され、ブラウザによって解析されて表示されます。
関数 ob_end_clean は、バッファーの内容をクリアしてバッファーを閉じますが、内容を出力しません。
このとき、バッファの内容を取得するには、ob_end_clean() の前で関数 ob_get_contents() を使用する必要があります。
この場合、ob_end_clean()を実行する前に内容を変数に保存し、ob_end_clean()の後にその変数を操作することができます。
これはEGです:
ob_start(); // buf1
echo ' multiple ';
ob_start(); // buf2
echo ' バッファは動作します ';
$buf2 = ob_get_contents();
ob_end_clean() ;
$buf1 = ob_get_contents();
ob_end_clean();
echo $buf1;
echo '
';
echo $buf2;
ob_get_contents
(PHP 4, PHP 5)
ob_get_contents -- 出力バッファの内容を返します
Description
string ob_get_contents ( void )
これは、出力バッファの内容を返すか、出力バッファリングがアクティブでない場合は FALSE を返します。
を参照してください。 ob_start() と ob_get_length() も同様です。
コールバック関数をパラメーターとして ob_start を使用し、その関数が (マニュアルの例のように) ob 文字列を変更する場合、ob_get_contents が変更された ob を返すとは期待しないでください。
それは機能します。パラメータをまったく指定せずに ob_start を使用するのと同じなので、混乱しないでください。
イメージの転送、別のメソッド (fsockopen または関数ソケットの代替) :
server(192.168.0.1)
makeimage.php
.... 。 ......
..........
$nameimage="xxxx.jpg"
$comand=exec("plotvelocity.sh $nameimage $paramater1 $paramater2");
ob_start() ;
readfile($nameimage);
$image_data = ob_get_contents();
ob_end_clean();
echo $image_data;
unlink($nameimage);
クライアント (192.168.0.2)
$bild="images/newimage2.gif ";
$host="192.168.0.1";
$url=file_get_contents("http://$host/makeimage.php?$querystring");
$fp = fopen("$bild", 'wb') ;
fwrite($fp, $url);
fclose($fp);
echo '';
当然、画像だけでなく何でも転送できます
ob_get_clean
(PHP 4 >= 4.3.0, PHP 5)
ob_get_clean -- 現在のバッファーの内容を取得し、現在の出力バッファーを削除します
説明
string ob_get_clean ( void )
これは、出力バッファーの内容を返し、出力バッファリングを終了します。出力バッファリングがアクティブでない場合、ob_get_clean() は基本的に ob_get_contents() と ob_end_clean() の両方を実行します。
例 1. 単純な ob_get_clean() の例