La sintassi delle posix non la ricordo, con le PCRE basta costruire la regex racchiudendo ogni parola tra \b-parola-\b. Non specificandoli la reg exp ti sostituisce tutte le occorrenze, a prescindere che siano all'interno di una parola o meno. Una cosa tipo:Volendo provare a beccare anche se raddoppiano alcune lettere tipo le iniziali, le finali o le doppie ( una cosa tipo:codice:$censor_word ='sōla, pippa, schiappa'; // sostiuisce il separatore virgola ed eventuali spazi // con l'operatore OR $wRex = preg_replace('/\s*,\s*/','|',trim($censor_word)); // racchiude tra le \b $wRex = '/\b('.$wRex.')\b/i'; echo preg_replace($wRex,"**cens**",$mess_body);
'sei una sssssssschiapppppppppaaaaaaaaaaa',
si potrebbe costruire la regexp cosė:La sintassi \b indica l'inizio (se posto all'nizio) o la fine di una parola. Quindi \b-parola-\b cerca la parola esatta, mentre ad esempio se tu cercassi /\bporc\w+/i cercherebbe tutte le parole che cominciano con "porc" come porcozio, porcaloca, etccodice:$censor_word ='sōla, pippa, schiappa'; $wRex = preg_replace('/\s*,\s*/','|',trim($censor_word)); $wRex = preg_replace('/(\b\w|\w\b|\B(\w)\\2+\B)/','$1+',$wRex); $wRex = '/\b('.$wRex.')\b/i';
![]()