Функция очистики html кода почти один в один повторяет PHP функцию очистки строки
public function parseHtml( $text ){
$text = trim( $text );
$text = preg_replace( "/[^\x20-\xFF]/","",@strval( $text ) );
$text = strip_tags( $text,"<span><strong><i><img><a><u><p><ul><ol><li><br><object>
<embed><param><table><tr><td><th><h1><h2><h3><h4><h5><hr><div><code><pre>" );
$text = mysql_real_escape_string( $text );
return $text;
}На первом шаге trim() удаляет пробельные символы из начала и конца строки, затем preg_replace() удаляет не печатаемые, опасные символы. Затем происходит удаление html тэгов, но не всех, а только тех, которые не указаны в исключениях. Например, функция удалит тэг <script>, но оставит <img>, потому что <img> указан в списке исключений. На последнем шаге выполняется экранирование строки для использования в sql запросе функцией mysql_real_escape_string();
Стоит отметить, что эта функция, в случае необходимости, может подправляться под конкретную задачу. Иногда бывает нужно, например в комментариях, оставить только тэги <p><strong>, а остальные удалить, для этого достаточно сократить количество исключений в команде strip_tags(). Почему я не вынес этот параметр в качестве входного параметра? Потому что для 99.9% задач мне бывает необходим именно этот набор исключений, а в остальных случаях мне проще завести отдельную функцию, которая будет чистить только то, что нужно :)