У меня есть форма с <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('|', ' ', $r['db_field_name']);