我有两个功能:
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;
}
一切都很好,但返回$ output不仅显示核心功能,还显示“1”。我不知道这个“1”来自哪里。当我删除ob_start();和ob_get_clean();它消失了。所以我相信输出缓冲区以某种方式添加这个数字。但是怎么样,为什么呢?它是一个原始的“1”,而不是段落等。
Normaly display_function($ atts)显示,例如:
<div>This is Core Function!</div>
使用输出缓冲显示:
1 <div>This is Core Function!</div>
为什么会这样?如果它与我的功能有关,我再说一遍 - 1正在显示所有内容之前。
答案 0 :(得分:9)
这不是输出缓冲的工作原理。 ob_start
在完成时返回TRUE或FALSE,因此您连接了一堆不应该连接的东西。 (同样适用于对core_function的调用)。
display_function($atts) {
(attributes)
ob_start();
core_function($atts);
return ob_get_clean();
}
应该有效。它打开输出缓冲,这将保存您的所有输出(回声和打印等)。对ob_get_clean的调用将返回缓冲输出的内容。