文章介紹了php函數(shù)ob_start()、ob_end_clean()、ob_get_contents(),有需要的朋友可參考一下.
下面3個(gè)函數(shù)的用法
ob_get_contents() - 返回輸出緩沖區(qū)的內(nèi)容
ob_get_contents(PHP 4, PHP 5)
ob_get_contents — 返回輸出緩沖區(qū)的內(nèi)容
說(shuō)明
string ob_get_contents ( void )
只是得到輸出緩沖區(qū)的內(nèi)容,但不清除它.
返回值
此函數(shù)返回輸出緩沖區(qū)的內(nèi)容,或者如果輸出緩沖區(qū)無(wú)效將返回FALSE .
實(shí)例代碼如下:
- Example #1 A simple ob_get_contents() example
- ob_start();
- echo "Hello ";
- $out1 = ob_get_contents();
- echo "World";
- $out2 = ob_get_contents();
- ob_end_clean();
- var_dump($out1, $out2);
- ?>
以上例程會(huì)輸出:
string(6) "Hello "
string(11) "Hello World"
ob_flush() - 沖刷出(送出)輸出緩沖區(qū)中的內(nèi)容
ob_flush
(PHP 4 >= 4.2.0, PHP 5)
ob_flush — 沖刷出(送出)輸出緩沖區(qū)中的內(nèi)容
說(shuō)明
void ob_flush ( void )
這個(gè)函數(shù)將送出緩沖區(qū)的內(nèi)容(如果里邊有內(nèi)容的話(huà)).如果想進(jìn)一步處理緩沖區(qū)中的內(nèi)容,必須在ob_flush()之前調(diào)用ob_get_contents() ,因?yàn)樵谡{(diào)用ob_flush()之后緩沖區(qū)內(nèi)容將被丟棄.
此函數(shù)不會(huì)銷(xiāo)毀輸出緩沖區(qū),而像ob_end_flush() 函數(shù)會(huì)銷(xiāo)毀緩沖區(qū).
返回值
沒(méi)有返回值.
ob_clean() - 清空(擦掉)輸出緩沖區(qū)
ob_clean
(PHP 4 >= 4.2.0, PHP 5)
ob_clean — 清空(擦掉)輸出緩沖區(qū)
說(shuō)明
void ob_clean ( void )
此函數(shù)用來(lái)丟棄輸出緩沖區(qū)中的內(nèi)容.
此函數(shù)不會(huì)銷(xiāo)毀輸出緩沖區(qū),而像 ob_end_clean() 函數(shù)會(huì)銷(xiāo)毀輸出緩沖區(qū).
返回值
沒(méi)有返回值.
ob_end_flush() - 沖刷出(送出)輸出緩沖區(qū)內(nèi)容并關(guān)閉緩沖
ob_end_flush — 沖刷出(送出)輸出緩沖區(qū)內(nèi)容并關(guān)閉緩沖
說(shuō)明
bool ob_end_flush ( void )
這個(gè)函數(shù)將送出最頂層緩沖區(qū)的內(nèi)容(如果里邊有內(nèi)容的話(huà)),并關(guān)閉緩沖區(qū).如果想進(jìn)一步處理緩沖區(qū)中的內(nèi)容,必須在ob_end_flush()之前調(diào)用 ob_get_contents(),因?yàn)樵谡{(diào)用ob_end_flush()后緩沖區(qū)內(nèi)容被丟棄.
Note: 這個(gè)函數(shù)與ob_get_flush()相似,不同的是ob_get_flush()會(huì)把緩沖區(qū)中的內(nèi)容作為字符串返回.
返回值
成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE. 錯(cuò)誤的原因首先是,在調(diào)用時(shí)沒(méi)有一個(gè)起作用的緩沖區(qū),或者是因?yàn)槟承┰蚓彌_區(qū)不能被刪除(可能對(duì)特殊緩沖區(qū)而言).
錯(cuò)誤/異常
如果函數(shù)失敗了,將引發(fā)一個(gè)E_NOTICE異常.
更新日志
版本 說(shuō)明
4.2.0 添加了布爾返回值.
Example #1 ob_end_flush() example
下面的例子給出了一種送出緩沖區(qū)內(nèi)容并關(guān)閉所有輸出緩沖區(qū)的容易的方法:
實(shí)例代碼如下:
- while (@ob_end_flush());
- ?>
ob_end_clean() - 清空(擦除)緩沖區(qū)并關(guān)閉輸出緩沖
ob_end_clean — 清空(擦除)緩沖區(qū)并關(guān)閉輸出緩沖
說(shuō)明
bool ob_end_clean ( void )
此函數(shù)丟棄最頂層輸出緩沖區(qū)的內(nèi)容并關(guān)閉這個(gè)緩沖區(qū).如果想要進(jìn)一步處理緩沖區(qū)的內(nèi)容,必須在ob_end_clean()之前調(diào)用ob_get_contents(),因?yàn)楫?dāng)調(diào)用ob_end_clean()時(shí)緩沖區(qū)內(nèi)容將被丟棄.
返回值
成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE. 錯(cuò)誤的原因首先是,在調(diào)用時(shí)沒(méi)有一個(gè)起作用的緩沖區(qū),或者是因?yàn)槟承┰蚓彌_區(qū)不能被刪除(可能對(duì)特殊緩沖區(qū)而言).
錯(cuò)誤/異常
如果函數(shù)失敗了,將引發(fā)一個(gè)E_NOTICE異常.
更新日志
版本 說(shuō)明
4.2.0 添加了布爾返回值.
下面的例子給出了一種去除所有輸出緩沖區(qū)的方法:
實(shí)例代碼如下:
- Example #1 ob_end_clean() example
- ob_start();
- echo 'Text that won't get displayed.';
- ob_end_clean();
- ?>
flush() - 刷新輸出緩沖
通常是ob_flush();flush()同時(shí)一起使用
使用ob_start()把輸出那同輸出到緩沖區(qū),而不是到瀏覽器.
然后用ob_get_contents得到緩沖區(qū)的數(shù)據(jù).
ob_start()在服務(wù)器打開(kāi)一個(gè)緩沖區(qū)來(lái)保存所有的輸出.所以在任何時(shí)候使用echo ,輸出都將被加入緩沖區(qū)中,直到程序運(yùn)行結(jié)束或者使用ob_flush()來(lái)結(jié)束.然后在服務(wù)器中緩沖區(qū)的內(nèi)容才會(huì)發(fā)送到瀏覽器,由瀏覽器來(lái)解析顯示.
函數(shù)ob_end_clean 會(huì)清除緩沖區(qū)的內(nèi)容,并將緩沖區(qū)關(guān)閉,但不會(huì)輸出內(nèi)容.
此時(shí)得用一個(gè)函數(shù)ob_get_contents()在ob_end_clean()前面來(lái)獲得緩沖區(qū)的內(nèi)容.
這樣的話(huà), 能將在執(zhí)行ob_end_clean()前把內(nèi)容保存到一個(gè)變量中,然后在ob_end_clean()后面對(duì)這個(gè)變量做操作.
新聞熱點(diǎn)
疑難解答