Php vérifier si la chaîne contient plusieurs mots
J'ai regardé autour de l'internet pour quelque chose qui va le faire, mais il ne fonctionne qu'avec un seul mot.
Je suis en train de créer un script qui permet de détecter un mauvais nom d'utilisateur de mon site, le mauvais nom d'utilisateur sera détecté si le nom d'utilisateur contient l'un des mots dans un tableau.
Voici le code que j'ai fait, mais par un échec.
$bad_words = array("yo","hi");
$sentence = "yo";
if (strpos($bad_words,$sentence)==false) {
echo "success";
}
Si quelqu'un pouvait m'aider, j'apprécierais.
Double Possible: stackoverflow.com/q/1916261/259457
Qu'en est-il le nom de quelqu'un est "Petits"?
Ne pas utiliser = = (0 == false) reviendrait vrai. Si une fonction retourne plusieurs types, utilisation stricte (===, !==)
Ce sera ensuite transformé en un mauvais mot de filtre.
Peut les noms d'utilisateur contient des espaces ou d'autres caractères non alphanumériques? Et êtes-vous concerné avec des chaînes de caractères comme "yö", ce qui n'apparaissent pas dans votre filtre?
Qu'en est-il le nom de quelqu'un est "Petits"?
Ne pas utiliser = = (0 == false) reviendrait vrai. Si une fonction retourne plusieurs types, utilisation stricte (===, !==)
Ce sera ensuite transformé en un mauvais mot de filtre.
Peut les noms d'utilisateur contient des espaces ou d'autres caractères non alphanumériques? Et êtes-vous concerné avec des chaînes de caractères comme "yö", ce qui n'apparaissent pas dans votre filtre?
OriginalL'auteur Frank | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
utilisation
substr_count
pour un tableau, utilisez la fonction suivante
OriginalL'auteur Oliver M Grech
Vous pouvez utiliser ce code:
OriginalL'auteur anubhava
désolé pour le retard
function stringTester($feed, $strTest) { $processedFeed = normalize($feed); $processedTest = normalize($strTest); $pos = strpos($processedFeed, $processedTest); if ($pos === false) { //=== false //echo "WORD ".$strTest." NOT FOUND <br />"; return false; } else { //print_r($licitaToFilter); //echo "WORD " . $strTest . " FOUND IN <br />"; //echo " IS ON LINE ".$pos; return true; } }
function normalize ($string){ $trans = array('à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'ï'=>'i', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö '=>'o','ù'=>'u', 'ú'=>'u', 'ü'=>'u'); $processedString1 = strtolower($string); return (strtr($processedString1, $trans )); }
OriginalL'auteur ffdigital
Je crois qu'une phrase est plus que d'un seul mot
Essayer
OriginalL'auteur Baba
Peut-être que cela aide
OriginalL'auteur Willem T
Malheureusement, vous ne pouvez pas donner un
Array
à des fonctions strpos/strstr directement.Selon PHP.net commentaires, pour ce faire, vous avez besoin d'utiliser (ou de créer votre propre si vous voulez) de la fonction comme ceci:
Ensuite, il suffit de changer
strpos
à la nouvelle fonction -strstr_array
:OriginalL'auteur Karo
J'aimerais mettre en œuvre la présente comme suit:
Une phrase est valable que si elle contient au moins un mot de
$bad_words
. Remarque la vérification stricte (c'est à dire!==
), sans cela la vérification échoue lorsque le résultat destrpos
est 0 au lieu de false.OriginalL'auteur TaZ
Vous êtes à proximité. Vous pouvez le faire de la manière suivante:
OriginalL'auteur GSto