Php Heredoc并没有像I';我告诉它应该

Php Heredoc并没有像I';我告诉它应该,php,heredoc,Php,Heredoc,我刚刚开始了O'Reilly关于PHP、MySQL和JavaScript的书,我刚刚进入了解heredocs的阶段。书中说他们保留了文字,但我的却没有。我甚至复制了书中的代码,但它仍然没有运行,而且我被告知应该这样做 我希望我的代码在herdoc中保留换行符,但它不想这样做,我能让它这样做的唯一方法是使用“”标记 这是我的密码: <?php $author = "Bobby McBobson"; $text = <<<_END This is a Headline.

我刚刚开始了O'Reilly关于PHP、MySQL和JavaScript的书,我刚刚进入了解heredocs的阶段。书中说他们保留了文字,但我的却没有。我甚至复制了书中的代码,但它仍然没有运行,而且我被告知应该这样做

我希望我的代码在herdoc中保留换行符,但它不想这样做,我能让它这样做的唯一方法是使用“

”标记

这是我的密码:

<?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.
<br/>This is the second.
<br/>-Written by Bobby McBobson
这是一个标题。
这是第一行。

这是第二次。
由博比·麦克博森撰写
即使在这里,我也不得不使用

标签(因为明显的原因而分解),所以我认为我缺少了一些基本的东西?


<?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;
?>
对我来说效果很好,不要忘记在结束后用分号来关闭变量$text定义。如果你想要一个新行,你真的需要

标签,否则它只会解释为文本。 编辑:实际上,没有HTML的代码在我试用时会保持格式化,但在上会丢失格式化


不知道为什么?

换行符会被保留下来,但当以HTML形式编写时,这些换行符会失去其意义;要在HTML中添加格式,应使用
nl2br()


您还可以将它们包装在
或其他带有
空白的标记中:pre样式。

这是从书中引用的。再往前走一页左右

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


herdoc不添加html格式。查看页面的源代码,它在那里看起来是正确的;)我只是用css将它们包装成段落和样式。你需要做
echo“$text”吗在shell中是必需的吗?或者,如果您使用浏览器显示HTML,则必须包含

标记(或合适的变体)以将换行符插入正确的位置。或者执行
回显“$text”我刚刚添加了
标记来创建换行符(
是新行的HTML标记)我还用分号来结束变量定义我知道你为什么在那里添加了

,但是你应该在回答中解释你为什么这样做,以及为什么OP认为应该工作的东西没有按照他们的预期工作。好吧,Jon,这就是你的意思吗?我刚刚在php sandbox中尝试了你的原始代码(用分号),它保留了格式,而不必添加HTML…不完全是这样-因为如果插入到DB中,或者使用命令行,你不希望这样。解释应该是通过网络浏览器查看的事实。例如,如果包含在
标记中,它会显示得很好。我想我会停止尝试指导某人如何做出一个好的答案。=]在读同一本书时遇到同样的问题。。。一个完美的答案,谢谢。
<?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;
?>
echo nl2br($text);