2011-12-14 67 views
5

這裏需要一些PHP幫助,包含的內容顯示爲'1',這意味着它的真實性,但需要它的內容出現,而我不確定它爲什麼不是。這裏是一個功能的簡化版本:在ob_start()中使用include()

public function content { 
    $website->content = 'Some content here. '; 
    ob_start(); 
    include('myfile.php'); 
    $file_content = ob_end_clean(); 
    $website->content .= $file_content; 
    $website->content .= ' Some more content here.'; 
    echo $website->content; 
} 

此輸出:

 
Some content here 
1 
Some more content here 

當我需要它輸出:

 
Some content here 
'Included file content here' 
Some more content here 

任何想法就是我如何解決這個問題?

回答

8

嘗試使用ob_get_clean()而不是ob_end_clean()

兩者均清除當前緩衝區,但ob_end_clean()返回布爾值,而ob_get_clean()返回當前緩衝區的內容。

+0

謝謝你,那有效。 – 2011-12-14 19:48:19

2

您應該使用ob_get_clean()而不是ob_end_clean()。前者返回一個輸出緩衝區的字符串並清空它,而後者只是清空並返回一個布爾值。

2

而不是使用ob_end_clean的修改現有的代碼到類似下面

ob_start(); 

include('myfile.php'); 

$file_content = ob_get_contents(); 

ob_end_clean(); 

我不是爲ob_get_clean投票的原因是什麼,因爲我有次當其他開發商對於什麼是真正感到困惑繼續,函數名稱並沒有真正說明輸出緩衝在調用之後會結束。

我認爲這個功能很容易出現進一步的錯誤,因此使用ob_start/ob_end_clean更容易理解,更好的用於將來的代碼維護。

在額外的一行代碼之間進行權衡,但更容易理解的代碼非常值得。