【问题标题】:Output Buffer shows "1"输出缓冲器显示“1”
【发布时间】:2011-03-01 23:19:59
【问题描述】:

我有两个功能:

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”,而不是段落等。

通常 display_function($atts) 显示,例如:

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

并通过输出缓冲显示:

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

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

【问题讨论】:

    标签: php function ob-start


    【解决方案1】:

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

    display_function($atts) {
         (attributes)
    
         ob_start();
         core_function($atts);
         return ob_get_clean();
    }
    

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

    【讨论】:

    • 惊人而快速的答案,我所需要的,谢谢,谢谢,谢谢!因为仅仅接受你的回答是不够的。
    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多