Захват символов разрыва строки (новая строка, перевод строки) в текстовой области

StackOverflow https://stackoverflow.com/questions/289159

Вопрос

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

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

Я попробовал установить white-space:pre на textareaCSS, но этого все еще недостаточно.

Это было полезно?

Решение

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

Другие советы

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 );

Если вы собираетесь использовать 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: от строки Textarea до строки PHP

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

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

<*>
scroll top