最简单的方法是抑制函数可能产生的任何输出是什么?比如我有这个:
function testFunc() {
echo 'Testing';
return true;
}
我想调用testFunc()并获取其返回值,但不希望"Testing"在页面上显示。假设这将在其他输出其他内容的代码上下文中进行,有没有一个好的方法来实现这个目标?也许通过操作输出缓冲区?
最简单的方法是抑制函数可能产生的任何输出是什么?比如我有这个:
function testFunc() {
echo 'Testing';
return true;
}
我想调用testFunc()并获取其返回值,但不希望"Testing"在页面上显示。假设这将在其他输出其他内容的代码上下文中进行,有没有一个好的方法来实现这个目标?也许通过操作输出缓冲区?
没错,操作输出缓冲区正是解决方案。只需在调用会输出内容的方法之前开启它(不是函数本身,而是调用它的位置,可以将其包装在整个脚本或脚本流周围,但通过仅将其包装在方法调用周围,可以使其尽可能“紧凑”):
function foo() {
echo "Flush!";
return true;
}
ob_start();
$a = foo();
ob_end_clean();
没有生成任何输出。
这就是你需要的:
ob_start();
testFunc();
ob_end_clean();
"ob"代表输出缓冲区,可以查看这里的手册页面:http://www.php.net/outcontrol
你的想法是正确的,可以利用PHP的缓冲输出函数,即ob_start和ob_end_clean(在php.net上查找):
<?php
function testFunc() {
echo 'Testing';
return true;
}
ob_start();
$output = testFunc();
ob_end_clean();
echo $output;
?>
将一些条件应用于您的代码不是很容易吗?
我的意思是,如果变量=测试,则输出,否则不输出?
对于具有直接输出到浏览器的结果的函数(如EVAL),您可以在ob_start中捕获结果。