从 echo 中获取返回值

发布于 2024-12-06 07:31:22 字数 540 浏览 1 评论 0原文

我正在使用一些 echo 输出的函数。但我需要它们的返回,以便我可以在 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'

I'm working with some functions that echo output. But I need their return so I can use them in PHP.

This works (seemingly without a hitch) but I wonder, is there a better way?

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

Example:

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

盗琴音 2024-12-13 07:31:22

不,我能想到的“捕获”回声语句的唯一方法是像您一样使用输出缓冲。我在代码中使用了一个非常相似的函数:

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

它只短了 2 行,并且功能完全相同。

no, the only way i can think of to "catch" echo-statements it to use output-buffering like you already do. i'm using a very similar function in my code:

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

it's just 2 lines shorter and does exactly the same.

非要怀念 2024-12-13 07:31:22

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

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

Your first code is correct. Can be shortened though.

  function getEcho($function) {
        ob_start();
        $function;
        return ob_get_clean();
    }
    echo getEcho($function);
他不在意 2024-12-13 07:31:22

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

Your first piece of code is the only way.

海夕 2024-12-13 07:31:22

这些函数是你写的吗?您可以采用 3 种方法:

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

Did you write these functions? You can go 3 ways:

  1. Using your wrapper to do capturing via output buffering.
  2. Extra set of functions calls, wordpress style, so that "somefunc()" does direct output, and "get_somefunc()" returns the output instead
  3. Add an extra parameter to the functions to signal if they should output or return, much like print_r()'s flag.
り繁华旳梦境 2024-12-13 07:31:22
function getEcho() {
    ob_start();
    myEcho();
    return ob_get_clean();
}
$myvar =  getEcho();
function getEcho() {
    ob_start();
    myEcho();
    return ob_get_clean();
}
$myvar =  getEcho();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文