Как удалить строки строки (без символов!) Из строки?

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

Я могу вручную получить доступ к соответствующему полю в БД, нажать Backspace для каждой строки и то, что я потом хочу делать с строкой. Поэтому я знаю, что мне нужен формат выше.

Related of "Как удалить строки строки (без символов!) Из строки?"

Вы должны заменить его прегой, которая удаляет все символы новой строки и возврат каретки. Код:

 preg_replace( "/\r|\n/", "", $yourString ); 

Даже если символы \n не появляются, если вы получаете возврат каретки, там есть невидимый персонаж. Замена preg должна схватить и исправить.

Решение Бена приемлемо, но str_replace () намного быстрее, чем preg_replace ()

 $buffer = str_replace(array("\r", "\n"), '', $buffer); 

Используя меньшую мощность процессора, сокращает выбросы углекислого газа в мире.

 $str = " Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /> <br /> Greetings,<br /> Bill"; echo str_replace(array("\n", "\r"), '', $str); // echo $str in a single line 

Это потому, что nl2br() не удаляет новые строки вообще.

Возвращает строку со <br /> или <br> вставленными перед всеми символами новой строки ( \r\n , \n\r , \n и \r ).

str_replace этого используйте str_replace :

 $string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 

Чтобы нормально работать и в Windows, я бы предложил использовать

 $buffer = str_replace(array("\r\n", "\r", "\n"), "", $buffer); 

"\r\n" – для Windows, "\r" – для Mac и "\n" – для Linux

str_replace (PHP_EOL, null, $ str);

Что-то более функциональное (удобное в использовании):

 function strip_carriage_returns($string) { return str_replace(array("\n\r", "\n", "\r"), '', $string); } 

Использование PHP_EOL в качестве параметра замены поиска также является хорошей идеей! Престижность.

Вы также можете использовать PHP trim

Эта функция возвращает строку с пробелом, разделенным с начала и конца строки. Без второго параметра trim () разделит эти символы:

  • "" (ASCII 32 (0x20)), обычное пространство.
  • «\ t» (ASCII 9 (0x09)), вкладка.
  • «\ n» (ASCII 10 (0x0A)), новая строка (строка).
  • «\ r» (ASCII 13 (0x0D)), возврат каретки.
  • «\ 0» (ASCII 0 (0x00)), NUL-байт.
  • «\ x0B» (ASCII 11 (0x0B)), вертикальная вкладка.

Поскольку вы работаете с WP, почему бы не воспользоваться функцией WordPress wpautop (), описанной здесь: https://codex.wordpress.org/Function_Reference/wpautop

Пытаться:

 wpautop( $string );