PHP heredoc不保留格式

时间:2012-02-23 14:32:50

标签: php format heredoc

使用以下代码我希望看到显示5条单独的行。相反,它将所有内容包装在一条线上......没有标签,没有前导空格,没有空行。不是我所期待的。

在查看其他代码之后,程序员插入了我尝试过的一系列代码(使用
代替)并获得了我正在寻找的一些结果。我期待太多了吗?我永远无法获得领先的空间和标签。这可能是一个设置问题吗?

<?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撰写。

2 个答案:

答案 0 :(得分:5)

如果您要输出到HTML,请尝试将print调用包装在<pre>标记中。显示HTML时,浏览器不会关注操作系统换行符。 但是,如果你查看页面的源代码,你会看到输出格式符合预期。

如果您希望在HTML中显示新行,则必须使用<br/><p>或适当的CSS样式机制。

<强>更新

哦,我忘了!正如警惕的@MarkBaker(感谢)所提到的,PHP的nl2brdocs函数将通过用<br/>标记替换换行符来处理这样的操作:

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

答案 1 :(得分:4)

只需在脚本上添加header('Content-Type: text/plain;');

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

这告诉浏览器它应该将输出显示为纯文本(而不是HTML)。