开发者

get return from echo

开发者 https://www.devze.com 2023-04-06 19:32 出处:网络
I\'m working with some functions that echo output. But I need their return so I can use them in PHP.

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) 开发者_如何学Pythonbut 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'


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.


Your first code is correct. Can be shortened though.

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


Your first piece of code is the only way.


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.


function getEcho() {
    ob_start();
    myEcho();
    return ob_get_clean();
}
$myvar =  getEcho();
0

精彩评论

暂无评论...
验证码 换一张
取 消