Захват символов linebreaks (newline, linefeed) в текстовом поле

У меня есть форма с <textarea> и я хочу зафиксировать любые разрывы строк в этом текстовом поле на стороне сервера и заменить их на <br/> .

Это возможно?

Я попробовал настройку white-space:pre на CSS в textarea , но этого все еще недостаточно.

Посмотрите на nl2br() . Он должен делать именно то, что вы хотите.

Для выполнения nl2br() функции существует функция nl2br() :

Тем не менее, эта функция добавляет теги br, но фактически не удаляет новые строки – это обычно не проблема, но если вы хотите полностью их str_replace и preg_replace также возврат каретки, вы должны использовать str_replace или preg_replace

Я думаю, str_replace будет немного быстрее, но я не тестировал;

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

или

 $val = preg_replace( "#\n|\r|\r\n#", '<br />', $val ); 

Если вы собираетесь использовать str_replace или preg_replace , вы должны, вероятно, разместить "\r\n" в начале массива, иначе последовательность \r\n будет переведена на два <br/> (так как \r будет сопоставлен, а затем \n будет сопоставлен).

например:

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

или

 $val = preg_replace( "#\r\n|\n|\r#", '<br />', $val ); 

Для тех, кто хочет получить ответ, не полагающийся на nl2br() :

 $newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']); 

или (в данном случае):

 $newList = ereg_replace( "\n",'<br/>', $_POST['theTextareaContents']); 

PHP Side: от строки Textarea до строки PHP

 $newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']); 

PHP-сторона: строка PHP возвращается к строке TextArea:

 $list = str_replace('|', '&#13;&#10;', $r['db_field_name']);