PHP换行(\n)不起作用

ggu*_*erg 31 php newline

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

例:

error_log('test\n', 3, 'error.log');
error_log('test2\n', 3, 'error.log');
Run Code Online (Sandbox Code Playgroud)

输出:

test\ntest2\n
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

cee*_*yoz 51

使用双引号."test\n"会工作得很好.

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

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

  • 你怎么能在不到2分钟内给出这样一个完整的答案?那是我单独阅读**问题的时间!:○ (6认同)

小智 26

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


nil*_*esh 8

在浏览器中运行PHP脚本时,默认情况下它将呈现为HTML.如果您正在使用的图书显示,则代码或插图不准确.您可以使用"查看来源"查看发送到浏览器的内容,并且您会看到您的换行符存在.

<?php
echo "Line 1\nLine 2";
?>
Run Code Online (Sandbox Code Playgroud)

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

Line 1 Line 2
Run Code Online (Sandbox Code Playgroud)

如果您需要将纯文本发送到浏览器,可以使用以下内容:

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

这将输出:

Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)


小智 7

nl2br() 用于创建新行的函数

echo nl2br("Welcome\r\n This is my HTML document", false);
Run Code Online (Sandbox Code Playgroud)

上面的例子将输出:

欢迎
这是我的 HTML 文档


Sou*_*bes 6

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