从echo回来

时间:2011-09-23 14:18:44

标签: php return echo output-buffering

我正在使用echo输出的一些函数。但我需要他们的return所以我可以在PHP中使用它们。

这可行(看似毫无障碍)但我想知道,还有更好的方法吗?

    function getEcho( $function ) {
        $getEcho = '';
        ob_start();
        $function;
        $getEcho = ob_get_clean();
        return $getEcho;
    }

示例:

    //some echo function
    function myEcho() {
        echo '1';
    }

    //use getEcho to store echo as variable
    $myvar = getEcho(myEcho());      // '1'

4 个答案:

答案 0 :(得分:10)

不,我能想到的唯一方法是“捕获”echo-statements,它就像你已经使用的那样使用输出缓冲。我在我的代码中使用了一个非常相似的函数:

function return_echo($func) {
    ob_start();
    $func;
    return ob_get_clean();
}

它只有2行,并且完全相同。

答案 1 :(得分:6)

您的第一个代码是正确的。可以缩短。

  function getEcho($function) {
        ob_start();
        $function;
        return ob_get_clean();
    }
    echo getEcho($function);

答案 2 :(得分:2)

你的第一段代码是唯一的方法。

答案 3 :(得分:1)

你写过这些功能吗?你可以采取三种方式:

  1. 使用您的包装器通过输出缓冲进行捕获。
  2. 额外的函数调用,wordpress样式,以便“somefunc()”直接输出,“get_somefunc()”返回输出
  3. 在函数中添加一个额外的参数,以指示它们是否应该输出或返回,就像print_r()'s标志一样。