输出缓冲区显示"1"

ano*_*ous 1 php function ob-start

我有两个功能:

core_function($atts) {
        (attributes)
        (core functions, a few loops, echoes, a lot of direct input)
    }
Run Code Online (Sandbox Code Playgroud)

这就是我使用输出缓冲显示我的功能的方式(是的,我必须使用它!).

display_function($atts) {
            (attributes)

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

            return $output;
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但返回$ output不仅显示核心功能,还显示"1".我不知道这个"1"来自哪里.当我删除ob_start(); 和ob_get_clean(); 它消失了.所以我相信输出缓冲区以某种方式添加这个数字.但是怎么样,为什么呢?它是原始的"1",而不是段落等.

Normaly display_function($ atts)显示,例如:

<div>This is Core Function!</div>
Run Code Online (Sandbox Code Playgroud)

通过输出缓冲,它显示:

1             <div>This is Core Function!</div>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如果它与我的功能有关,我再说一遍 - 1正在显示所有内容之前.

GWW*_*GWW 9

这不是输出缓冲的工作原理. ob_start完成后返回TRUE或FALSE,这样你就连接了一堆不应该连接的东西.(同样适用于对core_function的调用).

display_function($atts) {
     (attributes)

     ob_start();
     core_function($atts);
     return ob_get_clean();
}
Run Code Online (Sandbox Code Playgroud)

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