Вариант реализации
Я тут подумал… Чтобы без геммороя удалить из HTML кода все ненужные (читай опасные) HTML теги, его вовсе не обязательно парсить в классическом понимании этого слова, а можно просто преобразовать в DOMDocument на сервере. Тогда нам будут доступны замечательные медоты removeChild и removeAttribute.
Сделать это можно примерно так:
public function process($text) {
$document = new DOMDocument('1.0', 'utf-8');
@$document->loadHTML($text);
$this->cleanNode($document->documentElement);
return $this->prepare($document->saveXML());
}
реализацию cleanNode оставляю на ваше усмотрение, так как что русскому хорошо, то немцу смерть. :)