file_put_contents и новая строка

У меня есть файл, который я пишу, и я не могу заставить file_put_contents добавлять следующую запись в новую строку, даже после символа новой строки. Что мне не хватает? Я нахожусь на оконной машине.

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

как вы просматриваете содержимое $file ? если вы используете блокнот, вы не видите \n .

пытаться

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

Для 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); 

Просто дайте нормальную новую линию, и она работает

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

Для тех, кто передает второй аргумент file_put_contents как массив, а не строку, он также работает, чтобы поместить PHP_EOL в качестве последнего элемента массива:

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

Сначала прочитайте что-нибудь о новом символе линии . Он отличается для каждой операционной системы … Есть LF , CR , CR + LF … Посмотрите здесь

В Windows вам понадобится CR + LF ( \r\n ), как уже сказал Матье. В Linux требуется только LF ( \n )

Но, конечно, используйте PHP_EOL .

При использовании файлов вам, вероятно, потребуется больше узнать о разделителях путей и каталогов. Они также разные. Используйте DIRECTORY_SEPARATOR вместо прямого косой черты или обратной косой черты;)