Vérifiez si la chaîne contient un mot dans le tableau
C'est pour un chat. J'ai un $string = "This dude is a mothertrucker"
. J'ai un tableau de badwords: $bads = array('truck', 'shot', etc)
. Comment pourrais-je vérifier pour voir si $string
contient l'un des mots dans $bad
?
Pour l'instant j'ai:
foreach ($bads as $bad) {
if (strpos($string,$bad) !== false) {
//say NO!
}
else {
//YES! }
}
Sauf quand je fais cela, lorsqu'un utilisateur tape un mot dans la $bads
liste, la sortie est NON! suivi de OUI! si pour une raison quelconque, le code est exécuté deux fois par.
source d'informationauteur user1879926
Vous devez vous connecter pour publier un commentaire.
pouvez-vous s'il vous plaît essayer ceci à la place de votre code
1) Le plus simple:
2) une Autre façon (lors de la vérification des tableaux vers l'autre, tableaux):
Vous pouvez retourner votre mauvais mot de tableau et de faire la même vérification beaucoup plus rapide. Définir chaque mot mauvais, comme une clé du tableau. Par exemple,
Dans ce code, nous sommes juste vérifier si un index existent, plutôt que de comparer un mauvais mot avec tous les mots dans le mauvais mot de la liste.
isset est beaucoup plus rapide que in_array et légèrement plus rapide que array_key_exists.
Assurez-vous qu'aucune des valeurs dans un mauvais mot de tableau sont des valeurs null.
isset renvoie false si l'index du tableau est mis à null.
Mettre et de sortie ou de mourir une fois trouver tous les mauvais mots, à l'instar de ce
Voulu cela?
Je voudrais aller de cette façon, si le chat de la chaîne n'est pas si longue.
Il y a un très court script php que vous pouvez utiliser pour identifier les mauvais mots dans une chaîne qui utilise str_ireplace comme suit:
La seule ligne:
fait tout le travail.
Si vous voulez le faire avec array_intersect(), puis utilisez code ci-dessous :