Hola que tal.
Me preguntaba como se puede mejorar este código, solamente detecta
 palabras malas si estan entre espacios, por 
ej: " malapalabra ", el PROBLEMA es si la PRIMERA palabra es una mala
 palabra, o también si la ÚLTIMA palabra lo es, entonces NO
 la detecta porque no tienen espacio a ambos lados. Digamos que son casos excepcionales. Si le quito el 
espacio me cortaría palabras válidas que tuvieran una parte de una frase
 que si se tomara por si sola sería una malapalabra.
Las malas palabras estan en DB.
Yo intentaba primero convertir todo el texto que viene de un 
textarea a un array y separarlo en 3 partes:La primera palabra,
El cuerpo, y la última palabra.
Y a cada parte someterlo a sus respectivas pruebas modificando ligeramente
 el codigo de abajo. Y después concatenar las 3 
partes. Esa es la idea pero no se como llevarla a cabo, pienso que debe
 haber otras formas mas sencillas pero no se las funciones necesarias.
Aqui va el código: 
mysql_connect("localhost","my_user","my_pass") or die ("Error al conectar a la Bd");
$reemplazado=" ";
$result=mysql_db_query("my_base","select frase from palabras");
while($row=mysql_fetch_array($result))
 {
   $palabras2=$row["frase"];
   $space=" ";
   $palabras2=$space.$palabras2.$space;
   $texto = eregi_replace("$palabras2", "$reemplazado", $texto);
 }
echo $texto; 
$texto tiene el mensaje que se introdujo a través de un 
formulario, uso PHP 4.3.2 
Gracias por la ayuda, Hasta Pronto.