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