Str_replace es mucho mas potente de lo que se cree. Creo que seria mas sencillo usar esta funcion enviando arrays como argumentos.
Aca se explica:
http://ar.php.net/str_replace
Algo basico seria
Código PHP:
$lista= array("hola","gato","pez","casa");
$lista_reemplaza_por= array("<b>hola</b>","gato","pez","casa");
$texto='Hola, te dije que mi gato se comio a mi pez en casa?';
$nuevo= str_replace($lista, $lista, $texto);
Que es bastante parecido a el ejemplo del manual.
saludos!