обратное преобразование работы функции br2nl

В языке PHP существует стандартная функция br2nl, которая преобразовывает переносы строк в HTML-тег переноса строки (
). Провернуть обратную операцию достаточно просто с помощью регулярных выражений, однако тут есть одна маленькая хитрость.

Дело в том, что функция nl2br не заменяет переносы строк на тег
, а добавляет этот тег к переносу строки. Таким образом, если например при редактировании материала вы преобразуете переносы в тег с помощью nl2br, а затем при его отображении в другом скрипте выполняете обратную операцию — то переносов будет уже два. Поэтому предлагаемая функция не только ЗАМЕНЯЕТ HTML-теги
на символы переноса строки, но и удаляет уже существующие переносы, чтобы исключить дублирование.
Функция обрабатывает как теги <br> так и <br />.

function br2nl($str) {
$str = preg_replace("/(rn|n|r)/", "", $str);
return preg_replace("=<br */?>=i", "n", $str);
}

источник http://brullworfel.ru/blog/php-br2nl/