Ответ 1
Посмотрите на функцию nl2br()
. Он должен делать именно то, что вы хотите.
У меня есть форма с <textarea>
, и я хочу зафиксировать любые разрывы строк в этом текстовом поле на стороне сервера и заменить их на <br/>
.
Возможно ли это?
Я попытался установить white-space:pre
в CSS textarea
, но этого все еще недостаточно.
Посмотрите на функцию 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
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
Сторона PHP: строка PHP возвращается к строке TextArea:
$list = str_replace('|', ' ', $r['db_field_name']);