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;
}

一切都很好,但是 return $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 正好在所有内容之前显示。

4

1 回答 1

9

这不是输出缓冲的工作方式。 ob_start完成后返回 TRUE 或 FALSE,因此您正在连接一堆不应该连接的东西。(对 core_function 的调用也是如此)。

display_function($atts) {
     (attributes)

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

应该管用。它打开输出缓冲,这将保存您的所有输出(回声和打印等)。对 ob_get_clean 的调用将返回缓冲输出的内容。

于 2011-03-01T23:25:50.933 回答