在 Windows 环境中使用 file_put_contents() 附加带有换行符的文本

问题描述 投票:0回答:6

我正在写入一个文件,但即使在换行符之后,我也无法让

file_put_contents()
在新行上附加下一个条目。我缺少什么?我使用的是 Windows 机器。

$file = 'test.txt';
$message = "test\n\n";
file_put_contents($file, $message, FILE_APPEND);
php windows file append newline
6个回答
124
投票

尝试

$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);

33
投票

对于 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);

15
投票

您如何查看

$file
的内容?如果您使用记事本,则看不到
\n


5
投票

只要给出一个正常的新行就可以了

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

4
投票

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

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

2
投票

首先,阅读有关“new line”字符的一些内容。每个操作系统都不一样...有LFCRCR+LF...看看这里 在 Windows 上,您需要

CR+LF

(\r\n),正如 Mathieu 已经说过的那样。 在 Linux 上,只需要

LF
(\n)

但是,可以肯定的是,请使用

PHP_EOL


在使用文件时,您可能需要了解更多有关路径和目录分隔符的信息。它们也不同。使用

DIRECTORY_SEPARATOR

代替正斜杠或反斜杠 ;)

    

© www.soinside.com 2019 - 2024. All rights reserved.