pongo como lo solucione, debe haber mejores maneras pero al menos esto sirve:
Código:
$str=eregi_replace("h[[:space:]]*o[[:space:]]*l[[:space:]]*a", "####", $str);
ahi lo que hace es buscar la palabra "hola" sin importar si la escriban como "h o l a" y la cambia por ####.
Al igual si tenemos una lista de palabras no deseadas, lo que haria fuera crear un patron de acuerdo a la palabra, separandola entre cada una de sus letras y asi crear el patron para el replace...