Position actuelle: Accueil> Derniers articles> La différence entre la fonction STRPOS et la fonction STRPOS

La différence entre la fonction STRPOS et la fonction STRPOS

gitbox 2025-05-31

Parmi les fonctions de traitement des chaînes de PHP, StrPOS et STRPOS sont deux fonctions souvent utilisées. Ils se ressemblent presque, à une seule lettre d'intervalle, mais en fait, il y a une différence clé. Cet article vous amènera à bien comprendre les similitudes et les différences entre ces deux fonctions des aspects de l'utilisation, des différences, des précautions, etc.

1. Utilisation de base

STRPOS et STRPOS sont tous deux utilisés pour trouver l'emplacement où la chaîne apparaît d'abord dans une autre chaîne. Leur syntaxe de base est la suivante:

 strpos(string $haystack, mixed $needle, int $offset = 0): int|false
stripos(string $haystack, mixed $needle, int $offset = 0): int|false
  • $ Haystack est la chaîne cible à rechercher.

  • $ l'aiguille est la sous-chaîne à rechercher.

  • $ offset est facultatif, spécifiant où démarrer la recherche.

2. Différence de base: si c'est sensible à la casse

C'est la plus grande différence entre les deux:

  • STRPOS est sensible à la casse .

  • Stripos est insensible à la casse .

Exemple:

 <?php
$str = "Hello World";

var_dump(strpos($str, "world"));  // Sortir:bool(false)
var_dump(stripos($str, "world")); // Sortir:int(6)
?>

Dans cet exemple, STRPOS revient faux car il ne peut pas trouver le «monde» minuscule, tandis que STRPOS est insensible à la casse, de sorte que la position 6 peut être trouvée correctement.

3. Soyez prudent lorsque vous renvoyez la valeur

Les deux fonctions renvoient les entiers (positions de correspondance) ou false (non trouvés) . Il convient de noter que lorsque la position de correspondance est de 0 (c'est-à-dire que la sous-chaîne est au début), l'utilisation == false pour déterminer si la correspondance échoue.

Mécale de la méthode d'écriture:

 if (strpos("abc", "a") == false) {
    echo "Pas trouvé";
}

La sortie sera: "non trouvée" - mais elle est réellement trouvée.

Écriture correcte:

 if (strpos("abc", "a") === false) {
    echo "Pas trouvé";
}

Utilisez toujours Contruent === pour déterminer s'il est faux pour éviter les erreurs de jugement de la position 0.

4. Scénarios d'application courants

  • STRPOS : Vous devez strictement des recherches sensibles à des cas, telles que la détection sensible des mots, la correspondance des commandes de clé, etc.

  • Stripos : Vous voulez que les recherches soient plus détendues, telles que le traitement des entrées des utilisateurs, les Crawlers pour juger UA, l'analyse des paramètres d'URL, etc.

Exemple: déterminer si un lien contient un mot-clé spécifique

 <?php
$url = "https://gitbox.net/shop/product/123";

if (stripos($url, "/shop/") !== false) {
    echo "Ceci est une page de produit";
}
?>

Dans cet exemple, en utilisant des stripos pour déterminer si l'URL contient / boutique / mots clés, indépendamment de la partie supérieure et des minuscules, il peut identifier efficacement le type de page que l'utilisateur visite.

V. Différences de performance

Dans les utilisations les plus courantes, l'écart de performance entre les deux est négligeable. Mais si vous appelez fréquemment dans une grande boucle et que le nombre de chaînes est particulièrement grand, les STRPOS seront légèrement plus rapides car il n'a pas de processus de conversion de cas.

6. Conseils et précautions

  1. Ne mélangez pas les valeurs de retour de STRPOS et STRPOS pour porter des jugements unifiés, faites attention à la sémantique sensible aux cas.

  2. Si votre logique de recherche dépend de l'entrée de l'utilisateur, essayez d'utiliser autant que possible Stripos , ce qui est plus convivial.

  3. Use === false pour déterminer si le match échoue, sinon il sera facilement induit en erreur par la position 0.

7. Résumé

Nom de la fonction Que ce soit sensible à la casse Type de valeur de retour Utiliser des scénarios
strpos Oui int ou faux Faire correspondre précisément les scènes, strictement sensible à la cas
stripos Non int ou faux Correspondre vaguement aux scénarios, aux exigences de recherche insensibles à la casse

Bien que STRPOS et STRPOS ne soient qu'un seul minuscule I , la logique derrière elle détermine si vous pouvez trouver le résultat que vous souhaitez. Dans le développement réel, les choisir raisonnablement peut vous aider à éviter de nombreux bogues. J'espère que cet article peut vous aider à vraiment comprendre la différence entre eux et vous n'hésitera pas à écrire du code la prochaine fois!