С горем попалам решил задачу, на удивление даже время выполнения скрипта осталось почти неизменным, код привожу:
preg_match_all("/\\/i",$buf,$matc);
if (sizeof($matc[0])!=0):
$j = 0;
$num = sizeof($matc[0]);
while ($j<$num) {$buf = str_replace($matc[0][$j]," ",$buf);$j++;}
endif;
P.S. если кому вдруг понадобится, полный код "вылизывания html":
$buf = str_replace("\\r","",$buf);
$buf = str_replace("\\n","",$buf);
$buf = str_replace("\\t"," ",$buf);
$buf = str_replace(chr(160)," ",$buf);
preg_match_all("/\\/i",$buf,$matc);
if (sizeof($matc[0])!=0):
$j = 0;
$num = sizeof($matc[0]);
while ($j<$num) {$buf = str_replace($matc[0][$j]," ",$buf);$j++;}
endif;
$buf = ereg_replace("[ ]+"," ",$buf);
$buf = str_replace("> <","><",$buf);