0

想象一下:

<?php
echo 'foo';
echo 'bar';
?>

很简单,对吧?现在,如果在这个简单脚本的末尾,我需要将我在该脚本中回显的所有内容放在一个变量中,例如:

<?php
echo 'foo';
echo 'bar';
// $end // which contains 'foobar';
?>

我试过这个:

<?php
$end = NULL;
echo $end .= 'foo'; // this echoes foo
echo $end .= 'bar'; // this echoes foobar (this is bad)
// $end // which contains 'foobar' (this is ok);
?>

但它不起作用,因为它附加了数据,因此回显了附加的数据(重复)。有什么办法可以做到这一点?

编辑:我不能使用 OB,因为我已经在脚本中以不同的方式使用它(我在浏览器中模拟 CLI 输出)。

4

3 回答 3

1

显然我误解了:所以我建议这样做:

<?php
    $somevar = '';
    function record_and_echo($msg,$record_var) {
        echo($msg);
        return ($msg);
    }
    $somevar .= record_and_echo('foo');
    //...whatever else//
    $somevar .= record_and_echo('bar');
?>

旧:除非我误解,否则会很好:

<?php
    $output = ''
    $output .= 'foo';
    $output .= 'bar';
    echo $output;
?>
于 2013-07-28T21:32:51.197 回答
0

我不确定您要完成什么,但请考虑输出缓冲:

<?php
ob_start();
echo "foo";
echo "bar";

$end = ob_get_clean();
echo $end;
于 2013-07-28T21:31:03.430 回答
0

OB可以嵌套:

<?php
ob_start();

echo 'some output';

ob_start();

echo 'foo';
echo 'bar';

$nestedOb = ob_get_contents();
ob_end_clean();

echo 'other output';

$outerOb = ob_get_contents();
ob_end_clean();

echo 'Outer output: ' . $outerOb . '' . "\n" . 'Nested output: ' . $nestedOb;

结果:

Outer output: some outputother output;
Nested output: foobar
于 2013-07-28T21:39:49.857 回答