Ответ 1
как вы просматриваете содержимое $file
? если вы используете блокнот, вы не можете видеть \n
.
У меня есть файл, который я пишу, и я не могу заставить file_put_contents добавлять следующую запись в новую строку, даже после символа новой строки. Что мне не хватает? Я нахожусь на машине с Windows.
$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);
Сначала прочитайте что-нибудь о символе новой строки. Для каждой операционной системы это различно... Есть LF, CR, CR + LF... Посмотрите здесь
В Windows вам понадобится CR + LF (\r\n
), как уже сказал Матье.
В Linux требуется только LF (\n
)
Но, конечно, используйте PHP_EOL
.
При использовании файлов вам, вероятно, нужно будет узнать больше о разделителях путей и каталогов. Они также разные. Используйте DIRECTORY_SEPARATOR
вместо прямой косой черты или обратной косой черты;)
Для тех, кто передает второй аргумент file_put_contents как массив, а не строку, он также работает, чтобы поставить PHP_EOL в качестве последнего элемента массива:
file_put_contents($file, array('value 1', 'value 2', PHP_EOL), FILE_APPEND);