Intercettare se parola nell'array è singolare o plurale

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
scusa alex mi sono permesso una piccola aggiunta al tuo script e la posto perche penso che possa interessare anche altri
PHP:
<?php
function detectBadWords($text, array $badWords){
    $detected = array();
    foreach ($badWords as $badWord) {
        if (preg_match("/\b{$badWord}/i", $text, $matches)) {
            $detected[] = $matches[0];
        }
    }
	if(is_array($detected)){
		$filtro="**";
		return str_replace($detected,$filtro,$text);
	}else{
		return $text;
	}
    //return $detected;
}

//test
$parole = array('mel(a|e)', 'cavalier(e|i)', 'cas(a|e)');
$testo="nel mezzo di camin di Mele mi ritrovai per cavalieri che la caSa era smarrita";
echo "testo originale: $testo<br>";
echo "testo filtrato: ".detectBadWords($testo,$parole)."<br>";
?>

e questo è l'output
testo originale: nel mezzo di camin di Mele mi ritrovai per cavalieri che la caSa era smarrita
testo filtrato: nel mezzo di camin di ** mi ritrovai per ** che la ** era smarrita
 
Ho un ultima cosa che non riesco a sistemare, poi è a posto, devo mettere print_r(detectBadWords($stringa, $paroleArray)); in un mio echo personale che si chiama $errore

PHP:
$stringa = $_POST['nome'].' '.$citta.' '.$messaggio;
function detectBadWords($stringa, array $paroleArray) {
$detected = array();
foreach ($paroleArray as $parola) {
if (preg_match("/\b{$parola}\b/i", $stringa, $matches)) {
$detected[] = $matches[0];
}
}
return $detected;
}
print_r(detectBadWords($stringa, $paroleArray));
 

Discussioni simili