将回声捕获到变量中

One*_*erd 29 php

我正在使用动态函数名称调用函数(类似这样)

$unsafeFunctionName = $_POST['function_name'];
$safeFunctionName   = safe($unsafeFunctionName); // custom safe() function
Run Code Online (Sandbox Code Playgroud)

然后我想要围绕函数的返回值包装一些xml(类似这样):

// xml header etc already created
$result = "<return_value>" . $safeFunctionName() . "</return_value>";
Run Code Online (Sandbox Code Playgroud)

问题是,有时函数返回一个值,但有时,函数echo是一个值.我想要做的是将回显捕获到一个变量中,但是,我编写的代码需要以任何一种方式工作(意思是,如果函数返回一个值,或者echo是一个字符串).

不太清楚从哪里开始〜任何想法?

Pao*_*ino 68

让我先说一下:

小心那个自定义函数调用业务.我假设你知道这有多危险,这就是为什么你要以某种方式清理它.

过去,你想要的就是输出缓冲:

function hello() {
    print "Hello World";
}
ob_start();
hello();
$output = ob_get_clean();
print "--" . $output . "--";
Run Code Online (Sandbox Code Playgroud)

(我添加了破折号以显示它最初没有打印)

以上将输出 --Hello World--


小智 13

PHP:ob_get_contents

ob_start(); //Start output buffer
echo "abc123";
$output = ob_get_contents(); //Grab output
ob_end_clean(); //Discard output buffer
Run Code Online (Sandbox Code Playgroud)