У меня есть файл, который я пишу, и я не могу заставить 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
вместо прямого косой черты или обратной косой черты;)