Это может показаться обманом, но будьте уверены, что это не так — я искал ответ на мою проблему как в 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 для каждого разрыва строки, и то, что я позже хочу сделать со строкой, работает. Итак, я знаю, что мне нужен вышеуказанный формат.