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
339 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!

source:php.cn
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