2011-03-01 52 views
1

我有兩個功能:輸出緩衝器顯示「1」

core_function($atts) { 
     (attributes) 
     (core functions, a few loops, echoes, a lot of direct input) 
    } 

這就是我如何使用輸出緩衝顯示我的功能(是的,我一直用它!)。

display_function($atts) { 
      (attributes) 

       $output = ob_start(); 
       $output .= core_function($atts); 
       $output .= ob_get_clean(); 

      return $output; 
} 

一切都很好,但返回$輸出不僅顯示核心功能,而且還顯示它們之前的「1」。我不知道這個「1」來自哪裏。當我刪除ob_start();和ob_get_clean();它消失了。所以我相信輸出緩衝區以某種方式添加這個數字。但是,如何,爲什麼?這是一個原始的 「1」,而不是在一個段落等

Normaly display_function($的ATT)所示,例如:

<div>This is Core Function!</div> 

具有輸出緩衝它顯示:

1    <div>This is Core Function!</div> 

爲什麼它發生了嗎?如果它與我的功能有關,我會再說一遍 - 在所有內容之前,1正好顯示。

回答

9

這不是輸出緩衝的工作方式。 ob_start在完成時返回TRUE或FALSE,因此您要連接一堆不應連接的事物。 (您對core_function的調用也是如此)。

display_function($atts) { 
    (attributes) 

    ob_start(); 
    core_function($atts); 
    return ob_get_clean(); 
} 

應該工作。它打開輸出緩衝,這將保存所有的輸出(回聲和打印等)。調用ob_get_clean將返回緩衝輸出的內容。

+0

驚人而快速的答案,我所需要的一切,謝謝,謝謝,謝謝!因爲只接受你的答案是不夠的。 – anonymous 2011-03-01 23:45:28

+0

@anonymous歡迎你,我希望它有幫助。 – GWW 2011-03-01 23:45:50