Maison > développement back-end > tutoriel php > Pourquoi `strpos() === true` donne-t-il des résultats inattendus lors de la vérification des chaînes ?

Pourquoi `strpos() === true` donne-t-il des résultats inattendus lors de la vérification des chaînes ?

DDD
Libérer: 2024-12-29 09:44:16
original
366 Les gens l'ont consulté

Why Does `strpos() === true` Give Unexpected Results When Checking for Strings?

Pourquoi une comparaison stricte de strpos() avec True donne-t-elle un résultat inattendu ?

Question :

Dans le code donné, l'intention est de trouver toute chaîne inacceptable à l'intérieur de la variable $link. Cependant, même lorsque « https » est présent dans $link, le code affiche « Acceptable ». Quelle est la raison de ce comportement inattendu ?

$link = 'https://google.com';
$unacceptables = ['https:','.doc','.pdf', '.jpg', '.jpeg', '.gif', '.bmp', '.png'];

foreach ($unacceptables as $unacceptable) {
    if (strpos($link, $unacceptable) === true) {
        echo 'Unacceptable Found<br />';
    } else {
        echo 'Acceptable!<br />';
    }
}
Copier après la connexion

Réponse :

L'explication réside dans la nature de la fonction strpos(). Comme indiqué, strpos() renvoie la position numérique de la première occurrence de $unacceptable dans $link. Cependant, dans le code d'origine, il est incorrectement comparé à true, qui a une valeur booléenne. Cela conduit à un résultat inattendu.

Pour résoudre ce problème, la comparaison doit être modifiée pour rechercher une valeur non fausse à la place. En utilisant !== false, le code identifiera correctement toutes les chaînes inacceptables trouvées.

// ...
if (strpos($link, $unacceptable) !== false) {
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal