Есть такой рейплейс
$text = preg_replace("|[\r\n]+|", "\n", $text);
$text = preg_replace("|[\n]+|", "</p>\n<p>", $text);
Убирает (вроде правильно) лишние переносы строк и заключает все в параграфы.
Сейчас понадобилось чтоб он игнорировал html-теги в начале и в конце паттерна. Типа (div|ul|li) и так далее. Долго пробовал сам, но не получилось. Исключения писать как не понял.
Точнее если в тексте есть такое
"уменьшает силу размаха.</div>\r\n<div>Также уменьшает..."
, то теги параграфа не появлялись, в общем игнорировались.