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