Heredoc并没有按字面意思保存文字,因为我应该告诉它

时间:2013-04-15 03:25:35

标签: php heredoc

我刚刚开始撰写关于PHP,MySQL和JavaScript的O'Reilly书籍,我刚刚进入了解heredocs的阶段。它在书中说他们保留文字字面意思,但我的根本没有。我甚至完全按照书中的方式复制了代码,它仍然没有表现,我被告知它应该。

我希望我的代码能够保留heredoc中的换行符,但它只是不想这样做,我能做到的唯一方法就是使用“< br />”标记。

这是我的代码:

<?php
$author = "Bobby McBobson";

$text = <<<_END
This is a Headline.

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

echo $text;
?>

无论我使用的代码有什么变化,它都会像这样出现:

This is a Headline. This is the first line. This is the second. -Written by Bobby McBobson

而我希望它出现为:

This is a Headline.

This is the first line.
<br/>This is the second.
<br/>-Written by Bobby McBobson

即使在这里,我也不得不使用< br />标签(由于显而易见的原因而分解),所以我认为我缺少一些基本的东西?

3 个答案:

答案 0 :(得分:4)

保留换行符,但是当写为HTML时,这些换行符失去意义;要在HTML中添加格式,您应该使用nl2br()

echo nl2br($text);

您也可以将它们包含在<pre>或其他具有white-space: pre;样式的标记内。

答案 1 :(得分:1)

<?php
$author = "Bobby McBobson";

$text = <<<_END
This is a Headline.<br /><br />

This is the first line.<br />
This is the second line.<br />
- Written by $author.<br />
_END;

echo $text;
?>

对我来说很好用,不要忘记END之后用分号关闭变量$ text定义。如果你想要一个新行,你真的需要<br />标签,否则它只会被解释为文本。 编辑:实际上,当我在http://sandbox.onlinephpfunctions.com/上尝试时,没有HTML的代码会保留格式,但会在http://writecodeonline.com/php/上丢失格式

不确定原因?

答案 2 :(得分:1)

这是从这本书中引用的。它是一页左右。

  

在多行上布置文本通常只是方便   使您的PHP代码更容易阅读,因为一旦它显示在一个   网页,HTML格式规则接管,空格被抑制   (但$ author仍然替换为变量的值)。因此对于   例如,如果您将这些多行输出示例加载到浏览器中   它们不会显示多行,因为所有浏览器都会对待   换行就像空格一样。但是,如果您使用浏览器的视图   源功能,你会发现新行正确放置,   并且输出确实出现在几行上。