PHP jura palabra filtro

Estoy trabajando en un complemento de WordPress que reemplaza las malas palabras de los comentarios con otras aleatorias de una lista.

Ahora tengo 2 matrices: una que contiene las palabras malas y otra que contiene las palabras buenas.

$bad = array("bad", "words", "here");
$good = array("good", "words", "here");

Como soy un principiante, me quedé atascado en algún momento.

Para reemplazar las malas palabras, he estado usando$newstring = str_replace($bad, $good, $string);.

Mi primer problema es que quiero desactivar la sensibilidad del caso, por lo que no voy a poner las palabras de esta manera"bad", "Bad", "BAD", "bAd", "BAd", etc pero necesito la nueva palabra para mantener el formato de la palabra original, por ejemplo, si escribo "Malo", se reemplazará por "Palabras", pero si escribo "malo", se reemplazará por "palabras", etc.

Mi primer tratamiento fue usarstr_ireplace, pero se olvida si la palabra original tenía una letra mayúscula.

El segundo problema es que no sé cómo tratar con los usuarios que escriben así: "b a d", "w o r d s", etc. Necesito una idea.

Para hacer que seleccione una palabra al azar, creo que puedo usar$new = $good[rand(0, count($good)-1)]; entonces$newstring = str_replace($bad, $new, $string);. Si tienes una idea mejor, estoy aquí para escuchar.

El aspecto general de mi guión:

function noswear($string)
{
    if ($string)
    {       
        $bad = array("bad", "words");
        $good = array("good", "words"); 
        $newstring = str_replace($bad, $good, $string);     
        return $newstring;
}

echo noswear("I see bad words coming!");

¡Gracias de antemano por su ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta