2013-04-21 69 views
1

我是新來的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');?> 
+0

你爲什麼要寫信給'在這個過程中page.php'?這是否被第二個請求調用?你是否試圖以這種方式更新多個頁面,或只是那個? – mario 2013-04-21 22:34:23

+0

我正在嘗試創建很多頁面,但我想在所有頁面中使用相同的頁眉/頁腳。 – Jnafo 2013-04-21 22:39:47

+0

此時通常建議使用這些頁面的數據庫。擁有用於混合頁面佈局和內容的處理程序/模板腳本更具可維護性。擁有數十頁page.xYZ.php副本會變得很笨重。 – mario 2013-04-21 22:42:44

回答

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()); 
?> 

應該這樣做。您必須呼應整個包括行視爲字符串,以避免解析它

+0

謝謝,這個作品! – Jnafo 2013-04-21 22:38:20

3

您需要輸出 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); 
相關問題