Filtro de palabras malas en PHP?

Estoy escribiendo un filtro de palabras malas en PHP.

Tengo una lista de palabras malas en una matriz y el método cleanse_text () se escribe así:

public static function cleanse_text($originalstring){
   if (!self::$is_sorted) self::doSort();
   return str_ireplace(self::$badwords, '****', $originalstring);
}

Esto funciona trivialmente, para coincidencias exactas, pero también quería censurar palabras que se han disfrazado como 'ab * d' donde 'abcd' es una mala palabra. Esto está demostrando ser un poco más difícil.

Aquí están mis preguntas:

Es un filtro de malas palabras con el que vale la pena molestarse (es un sitio para profesionales, por lo que se requiere un cierto decoro mínimo, habría pensado)

¿Vale la pena el esfuerzo de tratar de capturar soluciones obvias como 'f * ck', o no debería intentar filtrarlas?

¿Hay una mejor manera de escribir el método cleanse_text () anterior?

Respuestas a la pregunta(5)

Su respuesta a la pregunta