我是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');?>
答案 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解析它