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 ?

Pourquoi `strpos()` renvoie-t-il 0 et comment puis-je vérifier de manière fiable l'existence d'une sous-chaîne ?

Linda Hamilton
Libérer: 2024-12-13 06:09:09
original
427 Les gens l'ont consulté

Why Does `strpos()` Return 0, and How Can I Reliably Check for Substring Existence?

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal