萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php函數ob_start()、ob_end_clean()、ob_get_contents()

php函數ob_start()、ob_end_clean()、ob_get_contents()

文章介紹了php函數ob_start()、ob_end_clean()、ob_get_contents(),有需要的朋友可參考一下。

下面3個函數的用法

ob_get_contents() - 返回輸出緩沖區的內容


ob_get_contents

(PHP 4, PHP 5)

ob_get_contents — 返回輸出緩沖區的內容
說明
string ob_get_contents ( void )

只是得到輸出緩沖區的內容,但不清除它。
返回值

此函數返回輸出緩沖區的內容,或者如果輸出緩沖區無效將返回FALSE 。
范例

 代碼如下 復制代碼

Example #1 A simple ob_get_contents() example
<?php

ob_start();

echo "Hello ";

$out1 = ob_get_contents();

echo "World";

$out2 = ob_get_contents();

ob_end_clean();

var_dump($out1, $out2);
?>

以上例程會輸出:

string(6) "Hello "
string(11) "Hello World"

 

ob_flush() - 沖刷出(送出)輸出緩沖區中的內容

ob_flush

(PHP 4 >= 4.2.0, PHP 5)

ob_flush — 沖刷出(送出)輸出緩沖區中的內容
說明
void ob_flush ( void )

這個函數將送出緩沖區的內容(如果裡邊有內容的話)。如果想進一步處理緩沖區中的內容,必須在ob_flush()之前調用ob_get_contents() ,因為在調用ob_flush()之後緩沖區內容將被丟棄。

此函數不會銷毀輸出緩沖區,而像ob_end_flush() 函數會銷毀緩沖區。
返回值

沒有返回值。


ob_clean() - 清空(擦掉)輸出緩沖區


ob_clean

(PHP 4 >= 4.2.0, PHP 5)

ob_clean — 清空(擦掉)輸出緩沖區
說明
void ob_clean ( void )

此函數用來丟棄輸出緩沖區中的內容。

此函數不會銷毀輸出緩沖區,而像 ob_end_clean() 函數會銷毀輸出緩沖區。
返回值

沒有返回值。

ob_end_flush() - 沖刷出(送出)輸出緩沖區內容並關閉緩沖


ob_end_flush — 沖刷出(送出)輸出緩沖區內容並關閉緩沖
說明
bool ob_end_flush ( void )

這個函數將送出最頂層緩沖區的內容(如果裡邊有內容的話),並關閉緩沖區。如果想進一步處理緩沖區中的內容,必須在ob_end_flush()之前調用 ob_get_contents(),因為在調用ob_end_flush()後緩沖區內容被丟棄。

    Note: 這個函數與ob_get_flush()相似,不同的是ob_get_flush()會把緩沖區中的內容作為字符串返回。

返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE. 錯誤的原因首先是,在調用時沒有一個起作用的緩沖區,或者是因為某些原因緩沖區不能被刪除(可能對特殊緩沖區而言)。
錯誤/異常

如果函數失敗了,將引發一個E_NOTICE異常。
更新日志

版本  說明
4.2.0  添加了布爾返回值。

范例

Example #1 ob_end_flush() example

下面的例子給出了一種送出緩沖區內容並關閉所有輸出緩沖區的容易的方法:

 代碼如下 復制代碼 <?php
  while (@ob_end_flush());
?>

ob_end_clean() - 清空(擦除)緩沖區並關閉輸出緩沖

ob_end_clean — 清空(擦除)緩沖區並關閉輸出緩沖
說明
bool ob_end_clean ( void )

此函數丟棄最頂層輸出緩沖區的內容並關閉這個緩沖區。如果想要進一步處理緩沖區的內容,必須在ob_end_clean()之前調用ob_get_contents(),因為當調用ob_end_clean()時緩沖區內容將被丟棄。
返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE. 錯誤的原因首先是,在調用時沒有一個起作用的緩沖區,或者是因為某些原因緩沖區不能被刪除(可能對特殊緩沖區而言)。
錯誤/異常

如果函數失敗了,將引發一個E_NOTICE異常。
更新日志

版本  說明
4.2.0  添加了布爾返回值。

范例

下面的例子給出了一種去除所有輸出緩沖區的方法:

 代碼如下 復制代碼

Example #1 ob_end_clean() example
<?php
ob_start();
echo 'Text that won't get displayed.';
ob_end_clean();
?>

flush() - 刷新輸出緩沖    

通常是ob_flush();flush()同時一起使用
使用ob_start()把輸出那同輸出到緩沖區,而不是到浏覽器。
然後用ob_get_contents得到緩沖區的數據。

ob_start()在服務器打開一個緩沖區來保存所有的輸出。所以在任何時候使用echo ,輸出都將被加入緩沖區中,直到程序運行結束或者使用ob_flush()來結束。然後在服務器中緩沖區的內容才會發送到浏覽器,由浏覽器來解析顯示。

函數ob_end_clean 會清除緩沖區的內容,並將緩沖區關閉,但不會輸出內容。
此時得用一個函數ob_get_contents()在ob_end_clean()前面來獲得緩沖區的內容。
這樣的話, 能將在執行ob_end_clean()前把內容保存到一個變量中,然後在ob_end_clean()後面對這個變量做操作。

copyright © 萬盛學電腦網 all rights reserved