2012-02-23 154 views
2

使用下面的代碼我希望看到5個單獨的行顯示。相反,它將所有內容都包裝在一行中......沒有標籤,沒有前導空格,也沒有空白行。不是我期待的。PHP heredoc不保留格式

查看其他代碼後,程序員插入了一系列我試過的代碼(使用
代替),並獲得了一些我期待的結果。我是否期待太多?我永遠無法獲得領先的空格和製表符。這可能是一個設置問題?

<?php 
$author = "Alfred E Newman"; 

$out = <<<_END 
     This is a Headline 

    This is the first line. 
    This is the second. 
     - Written by $author. 
_END; 

print $out; 
// echo $out; // ... didn't format as expected either 
?> 

結果:這是一個標題這是第一行。這是第二個。 - 由Alfred E Newman撰寫。

+0

無法重現,輸出看起來不錯:http://codepad.org/7Oogl3hY;) – hakre 2012-02-23 14:43:51

回答

5

如果要輸出爲HTML,請嘗試在<pre>標記中打包呼叫print。顯示HTML時,瀏覽器不關注OS換行符。 但是,如果你查看頁面的源代碼,你會看到輸出的格式如預期那樣。

如果要在HTML中顯示新行,則必須使用<br/><p>或適當的CSS樣式機制。

UPDATE

哦,我忘了!正如不斷警惕@MarkBaker(感謝)提到的,PHP的nl2brdocs功能會爲你處理這樣的操作通過替換換行符與<br/>標籤:

$output = nl2br($output); 
print $output; 
+3

,不要忘了nl2br()函數 – 2012-02-23 14:41:24

+0

@MarkBaker哦,好點。更新... – rdlowrey 2012-02-23 14:42:12

4

剛上你的腳本的頂部添加header('Content-Type: text/plain;');

<?php 
header('Content-Type: text/plain;'); 
$author = "Alfred E Newman"; 
... 

這告訴你的瀏覽器,它應該顯示輸出爲純文本(而不是HTML)。