2011-03-13 46 views
1

我正在處理別人的代碼,並且有~800行標記與標記混合在一起。我試圖在這些頁面上應用一些模板,我想我會先從輸出緩衝區中捕獲所有的輸出,然後將其作爲一個變量返回,然後逐件排序。ob_get_clean()的輸出被截斷爲1024個字符?

問題是,在緩衝區結尾處,當我以字符串的形式返回輸出時,它被截斷爲1024個字符。爲什麼會這樣?

+1

我剛剛檢查了php.ini文件,並將memory_limit設置爲32 MB,所以我懷疑這是它.. – doub1ejack 2011-03-13 15:46:07

回答

0

通常情況下,它沒有做到這一點,這可能意味着:

  1. 還有一個ob_start($callback)與特定的回調活躍搞亂的東西了(什麼ob_get_level說什麼?)。
  2. 有誤操作後ob_get_clean()
  3. 有涉及錯誤的檢查方法,以及1024截止是不正確的(Xdebug的對的var_dump的限制,隱藏內容中的HTML屬性&不看源等)

這3個都是關於它的,沒有代碼就沒有太多說的了。

0

這些1024個字節可能不是輸出的開始。有些內容可能已經通過輸出緩衝區。出於測試目的嘗試:

ob_start(NULL, 1<<20); // 1MB buffer 

echo ...; 

$all = ob_get_contents(); 
ob_end_clean(); 

也可以用ob_get_flush()代替。如果一切都失敗,請使用自定義ob_處理程序。