我刚刚开始撰写关于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 />
标签(由于显而易见的原因而分解),所以我认为我缺少一些基本的东西?
答案 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仍然替换为变量的值)。因此对于 例如,如果您将这些多行输出示例加载到浏览器中 它们不会显示多行,因为所有浏览器都会对待 换行就像空格一样。但是,如果您使用浏览器的视图 源功能,你会发现新行正确放置, 并且输出确实出现在几行上。