2012-02-23 71 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)。