我正在试图用ob_start()做什么?

时间:2013-04-21 22:31:55

标签: php include ob-start

我是php的新手,并试图创建一个简单的脚本..但我不知道我想用ob_start()做什么是可能的,请让我知道,谢谢。 这是我的代码:

<?php
ob_start();

if($mystuff !== 0) { foreach($mystuff['sirf7alk'] as $mystuff) {
?>

<?php include('header.php'); ?>

App name: <?php echo $mystuff->app; ?>

<?php include('footer.php');?>

<?php
} } 

file_put_contents('page.php', ob_get_contents());
?>

这就是我的代码输出的内容:

my header content
App name: My app name
my footer content

这是我想要实现的目标:

<?php include('header.php'); ?>
App name: My app name
<?php include('footer.php');?>

2 个答案:

答案 0 :(得分:3)

您需要输出 PHP代码,而不是运行它。将其作为字符串处理将会这样做:

ob_start();
if ($mystuff !== 0) {
    foreach($mystuff['sirf7alk'] as $mystuff) {
        echo "<?php include 'header.php' ?>".PHP_EOL;
        echo "App name: {$mystuff->app}".PHP_EOL;
        echo "<?php include 'footer.php' ?>".PHP_EOL;
    }
}
$output = ob_get_contents();
file_put_contents('page.php', $output);

现在已经回答了实际的问题......用这种方式控制输出缓冲可能很有趣,但它可能不是世界上最好的想法,也就是说有更好的方法可以达到同样的目的。结果。例如。简单地使用一个辅助变量来保存其他输出缓冲内容,这是一个更加理智的方法:

$output = '';
if ($mystuff !== 0) {
    foreach($mystuff['sirf7alk'] as $mystuff) {
        $output .= "<?php include 'header.php' ?>".PHP_EOL;
        $output .= "App name: {$mystuff->app}".PHP_EOL;
        $output .= "<?php include 'footer.php' ?>".PHP_EOL;
    }
}
file_put_contents('page.php', $output);

答案 1 :(得分:0)

<?php
ob_start();

if($mystuff !== 0) { foreach($mystuff['sirf7alk'] as $mystuff) {

echo "<?php include('header.php'); ?>\n";
?>
App name: <?php echo $mystuff->app; ?>

<?php
echo "<?php include('footer.php');?>\n";

} } 

file_put_contents('page.php', ob_get_contents());
?>

应该这样做。你必须将整个include行作为字符串回显,以避免php解析它