2013-02-03 63 views
0

下面是一個示例代碼:ob_end_clean修改變量以及

ob_start(); 
include("test.ini"); 
$string = ob_get_contents(); 
echo "<br/>"; 
echo "string: ".$string; 

和輸出:

testing = ini 
string: testing = ini 

當添加

ob_end_clean(); 

在上面有代碼的端在屏幕上沒有輸出。

我至少期待字符串在屏幕上回顯?爲什麼沒有看到?

+0

這種情況下也可以不包含ob_start()。 –

回答

1

ob_start();開始輸出緩衝到內部緩衝區不(屏幕),然後當你添加ob_get_contents();它複製內部緩衝區的輸出仍然沒有打印,並且當ob_end_clean();解釋,它會清除所有內部緩衝區內存,沒有任何輸出到屏幕上。

從ob_start()開始;到ob_end_clean();什麼都不會打印,我在使用這個方法的時候包含了用於防止在發送標題之前打印一些空白的文件。

+0

如果我甚至不包含ob_start(),我可以重現完全相同的東西。這是如何運作的? –

+0

區別在於:ob_start()在腳本結束前開始輸出緩衝,而當腳本執行結束時,正常緩衝輸出開始。 – 2013-02-03 12:04:40

1

請參閱ob_get_clean(),ob_end_flush()ob_end_clean()之間的差異。

ob_get_clean獲取當前緩衝區內容並丟棄當前輸出緩衝區。

ob_end_flush丟棄內容,但先輸出緩衝區。

ob_end_clean丟棄最高輸出緩衝區的內容。它什麼都不會返回。

1

我想你正在尋找ob_get_clean()函數。