我有一个我正在写的文件,我无法让file_put_contents在新行上追加下一个条目,即使在换行符之后也是如此。我错过了什么?我在一台Windows机器上。
$file = 'test.txt';
$message = "test\n\n";
file_put_contents($file, $message, FILE_APPEND);
答案 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
代替正斜杠或反斜杠;)