O problema é: você não vai conseguir bloquear os palavrões. Peguemos
shit como exemplo. Veja como é fácil driblar: s-h-i-t, s.h.i.t, s h i t, shiit, sshhiitt, entre outras
infinitas variantes.
Replace simples não adianta porque pode trocar qualquer palavra que contenha um "palavrão" no meio,
exempli gratia: cúmulo. Teria que ser uma expressão regular com bordas:
<?php
$message = 'you a fuckin lame boy u dont know what ta fuck u talkin bout';
$badwords = array('fuckin', 'lame', 'fuck');
print preg_replace(
array_map(create_function('$w', 'return "{\\b$w\\b}i";'), $badwords),
array_map(create_function('$w', 'return str_repeat("*", strlen($w));'), $badwords),
$message
);
?>
Mas mesmo assim é aquilo que eu disse: não adianta muita coisa.
Ok, um exemplo para bloqueio, eu esqueci:
<?php
if (preg_match(sprintf('{\b(%s)\b}i', implode('|', $badwords)), $message)) {
// mensagem de erro
}
?>
[]sAté mais