2

我刚刚开始阅读 O'Reilly 关于 PHP、MySQL 和 JavaScript 的书,而且我刚刚到了学习 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 />标签(由于明显的原因分解),所以我认为我缺少一些基本的东西?

4

3 回答 3

4

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

echo nl2br($text);

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

于 2013-04-15T03:59:58.933 回答
1

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

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

于 2014-06-01T22:50:34.473 回答
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;
?>

works fine for me, don't forget the semicolon after END to close the variable $text definition. You really need the <br /> tags if you want a new line otherwise it will just interpret as text. EDIT: Actually the code without HTML stays formatted when I try it on http://sandbox.onlinephpfunctions.com/ but loses its formatting on http://writecodeonline.com/php/

Not sure why?

于 2013-04-15T03:32:17.740 回答