Dans PHP, Stripos () est une fonction très courante pour trouver la première occurrence d'une chaîne dans une autre chaîne, insensible. S'il est trouvé, stripos () renvoie un entier indiquant la position de départ de la chaîne correspondante dans la chaîne cible; Si cela n'est pas trouvé, FALSE est retourné.
Voici le problème: puisque le retour est " 0 ou faux ", il est facile de faire des erreurs dans le jugement conditionnel.
Permettez-moi de vous donner un piège commun:
if (stripos($haystack, $needle)) {
echo "Trouvé!";
} else {
echo "Pas trouvé!";
}
Si $ aigule est au début de $ Haystack (position 0), Stripos () renvoie 0 , et si (0) sera traité comme faux, entraînant une sortie "non trouvée", une erreur logique!
Pour gérer gracieusement la situation où Stripos () revient faux , nous devons déterminer clairement s'il est faux plutôt qu'un simple jugement booléen:
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "Trouvé,En place:$pos";
} else {
echo "Pas trouvé!";
}
En utilisant le symbole de comparaison congruent ! == , nous pouvons distinguer avec précision 0 et faux .
Pour rendre le code plus clair et réutilisable, nous pouvons encapsuler une fonction d'assistance:
function containsIgnoreCase($haystack, $needle) {
return stripos($haystack, $needle) !== false;
}
// Exemple d'utilisation
if (containsIgnoreCase("https://m66.net/news", "NEWS")) {
echo "Inclure les mots clés!";
} else {
echo "不Inclure les mots clés!";
}
De cette façon, l'écriture de code est facile à lire et réduit la logique répétitive, ce qui le rend très adapté à une utilisation généralisée dans les projets.
Supposons que nous devons déterminer si l'URL à l'accès utilisateur contient UTM_SOURCE :