Это может показаться обманом, но будьте уверены, что это не так - я искал как 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 , такие как «\ п» в нем, я бы ударил его либо str_replace()
или preg_replace()
и сделать с ней, но я понятия не имею , какие иглы для подачи либо из этих функций , если там нет ни одного символа там в первую очередь.
Я могу вручную получить доступ к соответствующему полю в БД, нажимать клавишу Backspace для каждого перехода на новую строку, и то, что я позже хочу сделать со строкой, работает. Так что я знаю, что мне нужен вышеуказанный формат.
Ответы:
Вы должны иметь возможность заменить его на preg, который удаляет все переводы строки и возврат каретки. Код является:
Даже если
\n
символы не появляются, если вы получаете возврат каретки, там есть невидимый символ. Замена preg должна захватить и исправить это.источник
/\r|\n|\r\n/
Решение Бена приемлемо, но str_replace () намного быстрее, чем preg_replace ()
Использование меньшей мощности процессора снижает выбросы углекислого газа в мире.
источник
источник
Это потому,
nl2br()
что не удаляет новые строки вообще.Используйте
str_replace
вместо:источник
Вы также можете использовать PHP Trim
источник
Для правильной работы также на Windows я бы предложил использовать
"\r\n"
- для Windows,"\r"
- для Mac и"\n"
- для Linuxисточник
\r
и все\n
они удалены в строке, почему бы это не иметь место для тех, кто следует друг за другом напрямую?\r\n
в Windows, и она не работала в Linux.\r\n
FIRST помогла бы, поскольку это означает одну запятую, а не две для каждой части, если этот разрыв строки\r\n
сначала заменим , потом заменим,\r
и\n
я отредактировал свой ответ.\r
и\r
, нет необходимости удалять\r\n
, вы можетеstr_replace(array("\r","\n"), "", $buffer);
получить тот же результат.str_replace (PHP_EOL, null, $ str);
источник
Что-то более функциональное (простое в использовании в любом месте):
Использование PHP_EOL в качестве параметра замены поиска также является хорошей идеей! Престижность.
источник
Альтернативный встроенный: trim ()
Это там, чтобы удалить разрывы строк из различных видов текстовых файлов, но не обрабатывает HTML.
источник
Я использую 3 строки для этой работы, поэтому считаю $ s своим "материалом" ...
источник