PHP换行(\ n)不起作用

时间:2010-06-10 15:48:59

标签: php newline

出于某种原因,在使用PHP输出文件时,我无法使用\n创建换行符。它只是将“\n”写入文件。我也尝试过使用“\\n”,它只写“\ n”(如预期的那样)。但我不能为我的生活弄清楚为什么在我的字符串中添加\ n不会创建新行。我还尝试了\r\n,但它只是将“\r\n”附加到文件中的行。

示例:

error_log('test\n', 3, 'error.log');
error_log('test2\n', 3, 'error.log');

输出:

test\ntest2\n

在重要的情况下在OSX上使用MAMP(可能是某种PHP配置?)。

有什么建议吗?

10 个答案:

答案 0 :(得分:46)

使用双引号。 "test\n"可以正常使用。

  

如果字符串用双引号(“)括起来,PHP将解释特殊字符的更多转义序列:

http://php.net/manual/en/language.types.string.php

答案 1 :(得分:25)

\n并不意味着被最终用户视为新行,您必须使用html <br/>元素。 / n仅影响php生成的html如何出现在网页的源代码中。如果你进入你的网页并点击“查看源代码”,你会看到php生成的html为一条长行。不漂亮。这就是\n对于; 来将PHP生成的html分解为更短的行。 \n的目的是制作一个更漂亮的“查看源”页面。

答案 2 :(得分:8)

在浏览器中运行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

答案 3 :(得分:5)

我很确定你输出的是html文件。 问题是html忽略了源代码中的换行符,这意味着如果要在结果页面显示中显示换行符,则必须用<br/>替换换行符。

答案 4 :(得分:3)

您需要使用双引号。双引号有更多的逃避字符。

error_log("test\n", 3, 'error.log');
error_log("test2\n", 3, 'error.log');

答案 5 :(得分:3)

nl2br()函数用于创建新行

echo nl2br("Welcome\r\n This is my HTML document", false);

以上示例将输出:

欢迎
这是我的HTML文档

答案 6 :(得分:2)

这是因为你使用了撇号(')。请使用引号(“)代替。”提示PHP按字面意思使用撇号之间的任何内容。

答案 7 :(得分:2)

双引号是你想要的。单引号忽略\转义。双引号也会为你评估变量表达式。

在php手册中查看this page了解更多信息。

答案 8 :(得分:2)

\n放在双引号中试试


$LOG = str_replace('\n', "\n", $LOG);

答案 9 :(得分:0)

如果你想在它之后用换行符(\ n)打印这样的东西:

<p id = "theyateme">Did it get eaten?</p>

要打印上述内容,您应该这样做:

<?php
  print('<p id = "theyateme">Did it get eaten?</p>' . "\n");
?>

上面的客户端代码是:

<p id = "theyateme">Did it get eaten?</p>

上面的输出是:

它被吃掉了吗?

我知道这很难,但我始终这样做, 几乎总是必须这样做方式。

有时你希望PHP打印到页面而不是给出换行符,就像在JavaScript代码中一样(由PHP生成)。

关于答案的说明:您可能会这样:为什么使用打印而不是回声(我喜欢我的回声)。那是因为我更喜欢打印echo和printf,因为它在某些情况下效果更好(通常是我的情况),但在这种情况下可以用echo做得很好。