2011-07-22 52 views
1

我有這樣的HTML結構(剝離下來,便於閱讀)的:在PHP 1.4.3 HTML - 在HTML是不是被輸出,其中它應該

<head> 
<title>My website!</title> 
<?php include "myFile.php"; ?> 
</head> 

... 

<div id="header"></div> 
<div id="content"> 
    <?php GetSomeStuff(); ?> 
</div> 
<div id="footer"></div> 

然後,我有myFile.php:

<?php 
    ob_start(); 
    function GetSomeStuff() 
    { 
    if(something) 
     { 
     ob_end_clean(); 
     ?> 
     <p>some html here!</p> 
     <?php 
     ob_start(); 
     } 
    } 
    ob_end_clean(); 
?> 

我們希望我們的HTML會是這個樣子:

<div id="header"></div> 
<div id="content"> 
    <p>some html here!</p> 
</div> 
<div id="footer"></div> 

嘛,你猜怎麼着。這是什麼樣子:

<p>some html here!</p> 
<div id="footer"></div> 

它不僅在身體標記的開頭插入p標籤,但它還會刪除我的漂亮的頭球和內容的div!另外,我的標題標籤是空的 - 沒有標題! 。?:(

很顯然,我做錯了什麼我怎麼可以這樣做正確請注意,輸出會是一點點比我張貼在這裏做大;)

+0

除了你的問題:對我來說相當有用的答案是[回聲或不回聲?](http://stackoverflow.com/q/2216893/237483)。 –

回答

2

你myFile.php應該如下:

<?php 
    ob_start(); 
    function GetSomeStuff() 
    { 
    if(something) 
     { 
     ?> 
     <p>some html here!</p> 
     <?php 
     } 
    } 
    ob_end_clean(); 
?> 
+0

BAM!對!我不認爲它會在輸出緩衝區啓動時輸出:P – Jeff

+0

很酷!請接受這個答案。謝謝! – anupam

+0

剛做過 - 不得不等待3分鐘:P – Jeff

1

試試這個:

<?php 
    ob_start(); 
    function GetSomeStuff() 
    { 
    if(something) 
     { 
     ob_end_clean(); 
     echo "<p>some html here!</p>"; 
     ob_start(); 
     } 
    } 
    ob_end_clean(); 
?> 
+0

我想過這個,但是當我想輸出多行而不必在HTML中轉義任何東西時,它不會這樣做:( – Jeff

+0

這是什麼意思?爲什麼需要輸出多行?爲了代碼的可讀性?把一切都放在一個行... '回聲「

這裏的一些HTML

甚至更​​多的東西

!」;' – uberconversion

+0

是的,以避免逃避‘’ – Jeff

0

嘗試回覆你的PHP文件中的HTML。除了可能導致你所看到的行爲之外,在PHP文件中切換PHP和HTML是非常糟糕的風格 - 尤其是從PHP分離PHP時,這是你正在嘗試做的事情。

您是否想過使用像Smarty這樣的模板引擎?
http://www.smarty.net/

+0

我這樣做是因爲我會輸出很多HTML,而且我不想爲換行符做\ n,以確保HTML看起來合適。 – Jeff

+0

Smarty看起來像是一團糟安裝:) – Jeff

+0

您不必使用\ n換行,您可以在HTML代碼中使用換行符。無法在評論中顯示,會發布新的答案。編輯:我不知道,如果Smarty是一個「混亂安裝」,但你的代碼一定會沒有它的一團糟:) – Select0r

0

我這樣做,因爲我會輸出很多HTML的,我也 不想爲做\ n換行符,以確保HTML看起來正確。

試試這個:

echo "<p> 
    some text 
</p>"; 

,你將有 「適當的HTML」,而不使用 「\ n」。