Преобразование тегов BR в новые строки в текстовой области

Это функция, которую я сделал, которая должна конвертировать каждый Br разрыв строки в \n:

function br2nl($st){
    return preg_replace('/<br(\s+)?\/?>/i', "\n", $st);
}

Тем не менее, вывод выглядит так:

foo

bar

nuts

Я хочу, чтобы он вывел что-то вроде:

foo <br>
bar <br>
nuts

1 ответ

Решение

Возможно, ваш HTML

foo<br>
bar<br>
nuts<br>

Таким образом, у вас уже есть "\n", и, заменяя br на "\n", вы получите двойной символ \ n

foo \n\n bar \n\n nuts

это выглядит как

foo

bar

nuts

Для получения вывода вы предлагаете - вам нужно удалить "\n" из входного HTML, а затем заменить br на "\n"

Код будет

function br2nl($st){
  $st_no_lb = preg_replace( "/\r|\n/", "", $st );
  return preg_replace('/<br(\s+)?\/?>/i', "\n", $st_no_lb);
}
Другие вопросы по тегам