PHP:抑制函数内的输出?

Wil*_*lco 32 php function output-buffering

抑制函数可能产生的任何输出的最简单方法是什么?说我有这个:

function testFunc() {
    echo 'Testing';
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我想调用testFunc()并获得其返回值,而不会在页面中显示"Testing".假设这是在其他代码的情况下输出其他的东西,是有这样的好方法?也许搞乱输出缓冲区?

Cod*_*lan 60

是的,弄乱输出缓冲区就是答案.只需在调用输出的方法之前打开它(不是函数本身,但是在你调用它的地方,你可以将它包装在你的整个脚本或脚本流程中,但是你可以尽可能地使它"紧密"将它包裹在方法的调用周围):

function foo() {
  echo "Flush!";
  return true;
}

ob_start();
$a = foo();
ob_end_clean();
Run Code Online (Sandbox Code Playgroud)

并且不会生成任何输出.


Ray*_*yat 11

干得好:

ob_start();
testFunc();
ob_end_clean();
Run Code Online (Sandbox Code Playgroud)

"ob"代表"输出缓冲",请看这里的手册页:http://www.php.net/outcontrol