I would suggest you to use htmlentities(), then to use eregi_replace()...
Ex :
$string = htmlentities($string);
$string = eregi_replace("<h1>", "<h1>", $string);
$string = eregi_replace("<h2>", "<h2>", $string);
You could make an array to simplify the job...
$tags = array("h1", "h2", "h3", "h4", "h5", "h6", "b", "i", "u", .........);
$string = htmlentities($string);
for($i = 0; $i < count($tags); $i++) {
eregi_replace("<" . $tags[$i] . ">", "<" . $tags[$i] . ">", $string);
}