besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как в при записи набора строк в файл преобразовать символы, чтобы символ \n не делал перевод строки?

Eсть набор строк, среди которых часть строк содержат символ \n между словами.
как записать все строчки в файл в цикле, чтобы символ \n не делал перевод строки в файле, а записывался как какой-нибудь другой символ, а чтоб если считываем потом обратно строчки из файла, чтоб они считывались как были до записи в файл.

Например, были строки
$strings = ["Иван Иванович",  "Пётр\n Петрович", "Дмитрий Дмитревич".];


В файл должны попасть они в таком виде:

Иван Иванович
Пётр
Петрович
Дмитрий Дмитревич

а при последующем считывании строчек чтоб они считались опять как
$strings = [
"Иван Иванович", "Пётр\n Петрович", "Дмитрий Дмитревич"
];
Пётр
Петрович
Дмитрий Дмитревич

Или может быть даже по другому сделать замену, но чтоб после прочтения из файла они считывались нормально.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
file_put_contents('file.txt',json_encode($strings,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE));


Если нужен CSV, то так и надо было сразу говорить
В этом случае файл должен выглядеть так
"Иван Иванович"
"Пётр
 Петрович"
"Дмитрий Дмитревич"

И все прекрасно будет читаться.
И разумеется, в РНР есть функция записи CSV
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@SunTechnik
Из файла читайте не строки, а поток байтов.
Но надо определиться с длиной буфера..
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Перед записью в файл: $strings = str_replace("\n", "\\n", $strings);

После чтения из файла: $strings = str_replace("\\n", "\n", $strings);

Элементарнейше же, согласитесь?!
Ответ написан
@pantsarny
json_encode
serialize
var_export
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы