file_put_contents和新行帮助

时间:2010-02-24 10:30:40

标签: php

我有一个我正在写的文件,我无法让file_put_contents在新行上追加下一个条目,即使在换行符之后也是如此。我错过了什么?我在一台Windows机器上。

$file = 'test.txt';
$message = "test\n\n";
file_put_contents($file, $message, FILE_APPEND);

6 个答案:

答案 0 :(得分:81)

$file = 'test.txt';
$message = "test".PHP_EOL;
file_put_contents($file, $message, FILE_APPEND);

$file = 'test.txt';
$message = "test\r\n";
file_put_contents($file, $message, FILE_APPEND);

答案 1 :(得分:18)

对于PHP_EOL,您可能没有看到新行,因为您在编写新行后定义了行的结尾。因此,只有在将新内容添加到文本文件的最后一行后才会生成新行。

它应该是这样的:

$file = 'test.txt';
$message = 'some message that should appear on the last line of test.txt';
file_put_contents($file, PHP_EOL . $message, FILE_APPEND);

答案 2 :(得分:11)

您如何查看$file的内容?如果您使用的是记事本,则无法看到\n

答案 3 :(得分:3)

对于那些将第二个参数传递给file_put_contents作为数组而不是字符串的人,它也可以将PHP_EOL作为最后一个数组元素:

file_put_contents($file, array('value 1', 'value 2', PHP_EOL), FILE_APPEND);

答案 4 :(得分:2)

只需给出一个正常的新行并且它可以正常工作

$file = 'test.txt';
$message = "test
";
file_put_contents($file, $message, FILE_APPEND);

答案 5 :(得分:1)

首先,阅读有关新行字符的内容。每个操作系统都有所不同......有 LF CR CR + LF ...看看{{3} }

在Windows上,您需要 CR + LF \r\n),正如Mathieu所说。 在Linux上,只需要 LF \n

但是,请务必使用PHP_EOL

在使用文件时,您可能需要了解有关路径和目录分隔符的更多信息。他们也不同。使用DIRECTORY_SEPARATOR代替正斜杠或反斜杠;)