PHP heredoc不保留格式


PHP heredoc not retaining format

使用以下代码,我希望看到显示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
?>

结果:这是一个标题这是第一行。这是第二个。-阿尔弗雷德·纽曼著。

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

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

更新

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

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

只需在脚本顶部添加一个header('Content-Type: text/plain;');

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

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