2016-11-24 131 views
1

我試圖修改輸出緩衝區的內容。 我得到的東西喜歡這樣的:如何修改輸出緩衝區?

if($this->page == 'login') 
{ 
       $output = ob_get_contents(); // $output is index.html    
       // have no idea how to modify `$output` 
} 

和我index.html

<html> 
    <head></head> 
    </body> 
    if($usr ==null) include 'login.php'; 
     else include main.php; //`main.php` with header bar and footer bar 
    // this's where i want to clean and insert my login form (login.php) 
    </body> 
</html> 

login.php

<?php 
    <form> 
     ..... 
    </form> 
?> 

我有$output但我要清理一切,插入的源login.php進入體內,讓每個人都可以看到我的登錄表單(有css作風格的網站)。我搜索了谷歌,只知道如何獲得內容,乾淨和齊平。但我看不出如何修改緩衝區內容。有沒有辦法修改它?

回答

2

我不確定代碼的其餘部分是如何工作的。但也許你可以使用標籤來替換。像這樣的東西。

index.html 
<html> 
    <head></head> 
    </body> 
    {{body}} 
    </body> 
</html> 


<?php 
//Logic file 
if($this->page == 'login') 
{ 
    $output = ob_get_contents(); // $output is index.html 
    ob_clean(); 
    ob_start(); 
    include 'login.php'; 
    $login_content = ob_get_contents(); // $output is index.html 
    ob_clean(); 
    $content = str_replace('{{body}}', $login_content, $output); 

    echo $content; 
} 
+0

其實,我做了它在我的index.php,但我認爲這是太糟糕的代碼。所以我試圖ob_get_content希望修改輸出。 – Hanata

+0

這應該工作。您的index.html是否被用作所有網頁的模板?我已將它更新爲{{body}}。您可以使用它來替換來自其他頁面的任何內容。 –

+0

哦,真好!你給我一個好主意。非常感謝。 – Hanata