Maison >développement back-end >tutoriel php >Pourquoi `strpos()` renvoie-t-il 0 et comment puis-je vérifier de manière fiable l'existence d'une sous-chaîne ?
Comprendre les bizarreries de la valeur de retour de strpos()
Lorsque vous utilisez strpos() pour localiser une sous-chaîne dans une chaîne donnée, il est crucial de prendre en compte les implications en matière de valeur de retour. Ne pas le faire peut entraîner des résultats inattendus.
Problème :
Dans une tentative d'identifier la position de départ de deux sous-chaînes et de garantir que la première est située avant la seconde , un programmeur rencontre un comportement inattendu. Le code vérifie la présence de chaque sous-chaîne dans la chaîne cible à l'aide de l'opérateur de comparaison d'égalité lâche (<>). Si la valeur de retour de strpos() est fausse, cela implique que la sous-chaîne n'a pas été trouvée. Cependant, lorsque la sous-chaîne commence à la position zéro, il semble que strpos() renvoie 0, ce qui est interprété à tort comme faux.
Résolution :
Le manuel PHP explicitement indique que strpos() peut renvoyer des valeurs booléennes FAUX ou non booléennes (par exemple, 0) qui sont évaluées à FAUX. Pour éviter cette confusion, PHP recommande d'utiliser l'opérateur === (égalité stricte) pour tester la valeur de retour de strpos().
Dans l'exemple fourni, le programmeur doit remplacer l'opérateur d'égalité lâche (<> ;) avec l'opérateur d'égalité stricte (!==) dans les vérifications strpos(). Cela garantira que la comparaison fonctionne comme prévu, identifiant correctement la présence ou l'absence des sous-chaînes dans la chaîne cible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!