是我想用ob_start()做什么?
问题描述:
我是新来的PHP,并试图创建一个简单的脚本..但我不知道我想要做什么可能与ob_start()请让我知道,谢谢。 这里是我的代码:是我想用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');?>
答
<?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());
?>
应该这样做。您必须呼应整个包括行视为字符串,以避免解析它
+0
谢谢,这个作品! – Jnafo 2013-04-21 22:38:20
答
您需要输出 PHP代码,而不是运行它的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);
你为什么要写信给'在这个过程中page.php'?这是否被第二个请求调用?你是否试图以这种方式更新多个页面,或只是那个? – mario 2013-04-21 22:34:23
我正在尝试创建很多页面,但我想在所有页面中使用相同的页眉/页脚。 – Jnafo 2013-04-21 22:39:47
此时通常建议使用这些页面的数据库。拥有用于混合页面布局和内容的处理程序/模板脚本更具可维护性。拥有数十页page.xYZ.php副本会变得很笨重。 – mario 2013-04-21 22:42:44