簡介
當PHP指令碼有輸出時,輸出控制函數可以用這些來控制輸出。這在多種不同情況中非常有用,尤其是用來在指令碼開始輸出 資料後,發送http頭資訊到瀏覽器。輸出控制函數不影響由 header() 或 setcookie()發送的檔案頭資訊,僅影響像 echo這樣的函數和PHP代碼塊間的資料。
注意:
由於早先的版本的缺陷,當從PHP4.1.x(4.2.x,4.3.x)升級時,必須保證php.ini中的implicit_flush 是 OFF, 否則任何用 ob_start()的輸出將在輸出中隱藏掉。
基本用法
<?php ob_start(); echo "Hello\n"; setcookie("cookiename", "cookiedata"); ob_end_flush();?>
在上面的例子中, echo函數的輸出將一直被儲存在輸出緩衝區中直到調用 ob_end_flush() 。同時,對 setcookie()的調用也成功儲存了一個cookie,而不會引起錯誤。(正常情況下,在資料被發送到瀏覽器後,就不能再發送http頭資訊了。)
輸出控制函數
flush — 重新整理輸出緩衝
ob_clean — 清空(擦掉)輸出緩衝區
ob_end_clean — 清空(擦除)緩衝區並關閉輸出緩衝
ob_end_flush — 沖刷出(送出)輸出緩衝區內容並關閉緩衝
ob_flush — 沖刷出(送出)輸出緩衝區中的內容
ob_get_clean — 得到當前緩衝區的內容並刪除當前輸出緩。
ob_get_contents — 返回輸出緩衝區的內容
ob_get_flush — 刷出(送出)緩衝區內容,以字串形式返回內容,並關閉輸出緩衝區。
ob_get_length — 返回輸出緩衝區內容的長度
ob_get_level — 返回輸出緩衝機制的嵌套層級
ob_get_status — 得到所有輸出緩衝區的狀態
ob_gzhandler — 在ob_start中使用的用來壓縮輸出緩衝區中內容的回呼函數。
ob_implicit_flush — 開啟/關閉絕對刷送
ob_list_handlers — 列出所有使用中的輸出處理常式。
ob_start — 開啟輸出控制緩衝
output_add_rewrite_var — 添加URL重寫器的值(Add URL rewriter values)
output_reset_rewrite_vars — 重設URL重寫器的值(Reset URL rewriter values)