Это может показаться обманом, но будьте уверены, что это не так. Я искал как SO, так и остальную часть Интернета для ответа на мою проблему и в итоге обнаружил такие же недостаточные "решения" и над. Во всяком случае, здесь идет:
Я сохраняю пользовательский ввод из текстового поля в базу данных MySQL (в среде WordPress, но это не имеет значения для этой проблемы, я считаю). Он позже извлекается из БД, чтобы он показывался Админам в бэкэнд сайта. Проблема возникает, когда пользователи отправляют текст с разрывами строк (т.е. Нажимают клавишу Enter).
Пример строки может выглядеть так:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
В строке нет символов конца строки ( "\n", "\ r" или тому подобного).
Я использую nl2br()
для создания HTML-вывода, но этого недостаточно. Тогда результат:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Что, насколько я понимаю, является ожидаемым результатом nl2br()
, поскольку он вставляет теги и не должен заменять разрывы строк в первую очередь?
Однако формат, который мне нужен, будет следующим:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Если в строке присутствовали символы EOL, такие как "\n", я бы ударил ее либо с помощью str_replace()
, либо preg_replace()
и делал это с ней, но я не знаю, какую иглу подавать любой из этих функции, если в нем нет символов.
Я могу вручную получить доступ к соответствующему полю в БД, нажать Backspace для каждой строки, и то, что я потом хочу делать с строкой, работает. Поэтому я знаю, что мне нужен формат выше.