Position actuelle: Accueil> Derniers articles> La recherche de Stripos a échoué et renvoie faux. Comment le gérer élégamment?

La recherche de Stripos a échoué et renvoie faux. Comment le gérer élégamment?

M66 2025-05-13

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!

La bonne façon de juger

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 .

Un autre package: écrivez une fonction de gadget

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.

Application pratique: déterminer si la source d'accès de l'utilisateur contient certains mots clés

Supposons que nous devons déterminer si l'URL à l'accès utilisateur contient UTM_SOURCE :