Пока сделали так:
function parse_content ($contents)
{
$contents=preg_replace ( "/<([^>]*)>/es", "\'<\'.str_replace (\'\\\\\\"\', \'┐\',\'\\\\1\').\'>\'", $contents);
$contents=preg_replace ( "/<code>(.*?)<\\/code>/es", "\'<code>\'.str_replace (\'\\\\\\"\', \'┐\',\'\\\\1\').\'</code>\'", $contents);
$contents=preg_replace ( "/([>(\\s])(\\")([^\\"]*)([^\\s\\"])(\\")/", " \\\\1<\\\\3\\\\4>", $contents);
if (stristr ($contents, \'"\')):
$contents=preg_replace ( "/([>(\\s])(\\")([^\\"]*)([^ \\"])(\\")/", " \\\\1<\\\\3\\\\4>", $contents);
while (preg_match ("/(<)([^>]*)(<)/", $contents)) $contents=preg_replace ( "/(<)([^>]*)(<)([^>]*)(>)/", "\\\\1\\\\2„\\\\4“", $contents);
endif;
$contents = str_replace (\'<\',\'«\', $contents);
$contents = str_replace (\'>\',\'»\', $contents);
$contents = str_replace (\' - \',\' — \', $contents);
$contents = str_replace (\'┐\',\'"\', $contents);
$predlogs=array("а", "без", "более", "бы", "был", "была", "были", "было", "быть", "в", "вам", "вас", "весь", "во", "вот", "все", "всего", "всех", "вы", "где", "да", "даже", "для", "до", "его", "ее", "если", "есть", "еще", "же", "за", "здесь", "и", "из", "или", "им", "их", "к", "как", "ко", "когда", "кто", "ли", "либо", "мне", "может", "мы", "на", "надо", "наш", "не", "него", "нее", "нет", "ни", "них", "но", "ну", "о", "об", "однако", "он", "она", "они", "оно", "от", "очень", "по", "под", "при", "с", "со", "так", "также", "такой", "там", "те", "тем", "то", "того", "тоже", "той", "только", "том", "ты", "у", "уже", "хотя", "чего", "чей", "чем", "что", "чтобы", "чье", "чья", "эта", "эти", "это", "я");
foreach ($predlogs as $predlog)
$contents=str_replace(" ".$predlog." "," ".$predlog." ",$contents);
return $contents;
}