出于某种原因,在使用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配置?)。
有什么建议吗?
答案 0 :(得分:46)
使用双引号。 "test\n"
可以正常使用。
如果字符串用双引号(“)括起来,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做得很好。