如何在PHP中的变量中存储echo而不重复?

时间:2013-07-28 21:28:21

标签: php

想象一下:

<?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输出)。

3 个答案:

答案 0 :(得分: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;
?>

答案 1 :(得分:0)

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

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

$end = ob_get_clean();
echo $end;

答案 2 :(得分: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