PHP中的换行符("\n")无效。

23

由于某些奇怪的原因,插入 echo "\n"; 和其他转义序列字符对我不起作用,这就是为什么我只使用 <br /> 的原因。

书籍和其他文档中给出的示例结果图像似乎很正常。我目前正在使用 XAMPP,并已经使用相同实际结果的 WAMPP。为什么会这样呢?

编辑:

在与您的答案进行比较后,我似乎无法理解概念,因此查看了以下内容:PHP Linefeeds (\n) Not Working

编辑:

抱歉,我没有意识到上面的链接是指向写入文件的 PHP 代码。我只是想知道为什么我有这几个使用 \n 的 PHP 示例程序,即使它们输出在网页上。谢谢大家。


12
因为你正在输出 HTML,而在 HTML 中,"\n" 被视为空格符。 - andrewsi
我想强调一下,我正在使用双引号,并且它们嵌入在 PHP 代码中。另外,我使用的文件扩展名是 .php。 - Arman
1
在HTML中,换行符只有在white-space: pre或类似上下文中(pre元素的默认样式/行为)才被视为换行符。在其他HTML上下文中,换行符被视为空格。 - ACJ
1
PHP通常会将输出发送到浏览器,然后浏览器默认将其呈现为HTML。使用header('Content-type: text/plain');将导致输出呈现为纯文本。 - Herbert
9个回答

50
运行PHP脚本时,浏览器默认会将其呈现为HTML。如果你正在使用的书籍显示不同,则说明其中的代码或插图是不准确的。你可以使用“查看源代码”来查看发送到浏览器的内容,这样你就可以看到你的换行符存在。
<?php
echo "Line 1\nLine 2";
?>

这将在你的浏览器中呈现为:

Line 1 Line 2

如果您需要向浏览器发送纯文本,可以使用以下方式:

<?php
header('Content-type: text/plain');
echo "Line 1\nLine 2";
?>

这将输出:

Line 1
Line 2

PHP Linefeeds (\n) Not Working是指将输出发送到文件而不是浏览器。


一个文件而不是浏览器输出。就这样! - Arman
你的问题已经解决了吗? - Herbert
1
是的,我想这只是对那篇文章的误解。谢谢。 - Arman
当您在浏览器中运行PHP脚本时,PHP永远不会在浏览器中运行:它在服务器上运行。 - antidote

7
你应该使用nl2br()来解决问题。这个函数会把换行符(<br>)添加到你的输出中,这样浏览器就可以渲染出来了。而换行符则不能。

5
echo "\n" 可能有效,只是它的效果可能不是你所期望的。
该命令将插入一个新行字符。听起来,你正在使用浏览器查看输出结果。请注意,如果你编写了一个HTML文件,其中body内容如下所示:
<p>This
is
a
test </p>

浏览器渲染不包括换行符,而只会显示"This is a test"。
如果您想看到换行符,可以查看源代码,您会看到源代码中包含换行符。
经验法则是,如果您需要在浏览器中换行,则需要使用HTML(例如<br />),而如果您想要它在纯文本中,则可以使用\n

2

<br /> 是HTML的换行标签,而 "\n" 则是用于输出真正的换行。

浏览器不会在HTML文件换行时输出新行。


1
如果您正在处理HTML(例如在浏览器中查看结果),则必须使用HTML换行的方式,即:<br>

1

您可以使用nl2br函数将\n转换为<br>

如前所述,HTML不会将\n渲染为新行。它只识别<br> HTML标记。


0

PHP 在浏览器上输出,而浏览器只会呈现 HTML 格式的输出,其他格式的输出将被浏览器忽略。

如果您希望浏览器保持标准输出格式不变,您应该将输出内容包含在 HTML 的 <pre> 标签中。这将保留原有的格式:

echo "<pre>";
echo "This is first line\nThis is new line";
echo "</pre>";

这将被呈现为

This is first line
This is new line

或者,您可以在头部中提到内容类型为纯文本:

header('Content-type: text/plain');
echo "This is first line\nThis is new line";

这将告诉浏览器将输出呈现为纯文本。浏览器将自动将输出包含在<pre>标记中。

0

/n 只有在作为简单文本使用时才有效,但是在 HTML 文档中编码时,它会被视为 HTML 文本,因此您可以使用 </br> 标签代替。


-1

解决方案是使用echo nl2br或=> <br>


这已经在其他答案中提到过了。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接