Подтвердить что ты не робот

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

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

Возможно ли это?

Я попытался установить white-space:pre в CSS textarea, но этого все еще недостаточно.

4b9b3361

Ответ 1

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

Ответ 2

Функция nl2br() существует для этого:

Однако эта функция добавляет теги br, но на самом деле не удаляет новые строки - это обычно не проблема, но если вы хотите полностью их разбить и уловить возврат каретки, вы должны использовать 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 );

Ответ 3

Если вы собираетесь использовать 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 );

Ответ 4

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

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

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

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

Сторона PHP: от строки Textarea до строки PHP

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

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

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