怎么来<<< _END不起作用

时间:2011-01-26 20:09:55

标签: php

我正在尝试从'学习php MySQL& Javascript'来自Robin Nixon。

在其中,他解释了下面的代码应该如何按字面输出(带有行结尾和空格)。但它在一条线上输出所有东西。那是为什么?

$author = "Alfred E Newman";
echo <<<_END

This is a headline

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

5 个答案:

答案 0 :(得分:5)

很可能是输出“自有行”上的所有内容,但是,如果这是在HTML页面上,则可能无法保留换行符。将所有内容换行<pre>以保留所有空格。

示例:

echo <<<_END
<pre>
This is a headline

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

要进行适当的标记,您应该将元素包装在各自的容器中,例如:

echo <<<_END
<h2>This is a headline</h2>

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

上面的示例会将您的内容分解为多个部分。

答案 1 :(得分:2)

您很可能将其输出到HTML文档中。您必须使用nl2br()转换\n HTML换行符中的<br />换行符。

答案 2 :(得分:0)

您是在浏览器中还是在命令行上执行此操作?

如果您正在浏览浏览器:

浏览器不会像命令行那样尊重新行;它一起扼杀他们。

如果您查看生成页面的页面源,您会看到它确实按照您的意愿输出它。

答案 3 :(得分:0)

我在学习PHP,MySQL,JavaScript等方面遇到了同样的问题。罗宾尼克松的CSS。事实证明,在_END的分号之后我有一些空格;

我知道这已经有几年了,但万一其他人对这个例子有疑问。

答案 4 :(得分:0)

您不需要“ _END”,这只是本书的一个示例。 只需要记住<<<。 所以:

echo <<<something
lorem ipsum
lorem lorem
ipsum ipsum
something;

也会工作。

至于为什么它似乎不能很好地工作,浏览器不会渲染它,但是查看源代码会按预期显示它。