将回声捕获到变量中

php
2022-08-30 12:35:23

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

$unsafeFunctionName = $_POST['function_name'];
$safeFunctionName   = safe($unsafeFunctionName); // custom safe() function

然后我想将一些xml包装在函数的返回值周围(如下所示):

// xml header etc already created
$result = "<return_value>" . $safeFunctionName() . "</return_value>";

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

不太确定从哪里开始〜任何想法?


答案 1

首先,我要说:

请注意调用业务的自定义函数。我假设你知道这有多危险,这就是为什么你以某种方式清洁它。

除此之外,您想要的称为输出缓冲

function hello() {
    print "Hello World";
}
ob_start();
hello();
$output = ob_get_clean();
print "--" . $output . "--";

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

以上将输出--Hello World--


答案 2

菲律宾比索: ob_get_contents

ob_start(); //Start output buffer
echo "abc123";
$output = ob_get_contents(); //Grab output
ob_end_clean(); //Discard output buffer

推荐