Прежде всего, в то время как HTML не является регулярным и, следовательно, использование регулярных выражений для его синтаксического анализа - плохая идея, в PHP есть функция, которая удаляет теги для вас: strip_tags
Чтобы сжать пробелы при сохранении символов новой строки:
$content = preg_replace('/[^\n\S]{2,}/', " ", $content);
$content = preg_replace('/\n{2,}/', "\n", $content);
Первая строка будет сжать все пробелы, кроме \n
([^\n\S]
означает все символы, которые не \n
а не непробельный символ) в один пробел.Второй будет сжимать несколько новых строк в одну новую строку.