W3docs

strripos()

La fonction strripos() en PHP trouve la dernière occurrence d'une sous-chaîne sans tenir compte de la casse. Découvrez sa syntaxe et ses exemples.

Introduction

La fonction strripos() en PHP trouve la position de la dernière occurrence d'une sous-chaîne dans une autre chaîne, sans tenir compte de la casse. Le nom se décompose ainsi : str (string, chaîne) + r (reverse, c'est-à-dire recherche depuis la droite) + i (insensible à la casse) + pos (position).

C'est le pendant insensible à la casse de strrpos() : strripos("Hello", "L") et strripos("Hello", "l") renvoient toutes deux la même position, alors que strrpos() traiterait L et l comme des caractères différents.

Ce chapitre couvre la syntaxe, la valeur de retour (et le piège lié à false contre lequel il faut se prémunir), le paramètre optionnel $offset — y compris les décalages négatifs — et la relation entre strripos() et les autres fonctions de recherche dans les chaînes.

Syntaxe

strripos(string $haystack, string $needle, int $offset = 0): int|false
ParamètreDescription
$haystackLa chaîne dans laquelle effectuer la recherche.
$needleLa sous-chaîne à rechercher.
$offsetOptionnel. Point de départ de la recherche. Une valeur positive saute les premiers $offset caractères ; une valeur négative arrête la recherche à autant de caractères avant la fin de la chaîne. Par défaut : 0.

Valeur de retour : l'index (base zéro) de la dernière occurrence trouvée, ou false si $needle n'est pas trouvé.

Toujours comparer avec !==

strripos() renvoie 0 lorsque la correspondance se trouve au tout début de la chaîne, et 0 est falsy en PHP. Une vérification lâche comme if (strripos(...)) traiterait à tort une correspondance en position zéro comme « non trouvée ». Comparez toujours avec false via l'opérateur strict !== :

<?php

$haystack = "Apple pie";
$pos = strripos($haystack, "a"); // matches "A" at index 0

if ($pos !== false) {
  echo "Found at index $pos"; // Found at index 0
} else {
  echo "Not found";
}

Exemple de base

php— editable, runs on the server

Il y a deux caractères o/O dans Hello World — un dans Hello (index 4) et un dans World (index 7). Comme strripos() signale la dernière correspondance, la sortie est :

Found last occurrence of 'o' in 'Hello World' at position 7

Correspondance insensible à la casse

La recherche traite les lettres majuscules et minuscules comme égales, de sorte que la casse du $needle n'a pas d'importance :

<?php

$string = "Hello World, hello PHP";

echo strripos($string, "hello"), "\n"; // 13 — matches "hello" in "hello PHP"
echo strripos($string, "HELLO"), "\n"; // 13 — same match, case ignored

Le dernier hello/HELLO/Hello dans la chaîne commence à l'index 13, quelle que soit la manière dont vous mettez en majuscule le needle.

Utiliser le paramètre $offset

Un décalage positif démarre la recherche après les premiers $offset caractères :

<?php

$string = "Hello World";

echo strripos($string, "o", 5), "\n"; // 7 — only the "o" in "World" is considered

Un décalage négatif fait s'arrêter la recherche à autant de caractères avant la fin de la chaîne, ce qui est pratique pour trouver la dernière correspondance dans tout sauf une portion finale :

<?php

$string = "abcabc";

echo strripos($string, "b", -2), "\n"; // 4 — last "b" within the truncated search window

Fonctions associées

Choisissez la bonne fonction de recherche selon le besoin :

  • strrpos() — identique à strripos() mais sensible à la casse.
  • stripos() — trouve la première occurrence sans tenir compte de la casse.
  • strpos() — trouve la première occurrence en tenant compte de la casse.
  • strstr() — renvoie le reste de la chaîne à partir de la première correspondance, plutôt qu'une position.
  • substr() — extrait une partie de la chaîne une fois la position connue.
FonctionDirectionSensible à la casse ?
strpos()première correspondanceoui
stripos()première correspondancenon
strrpos()dernière correspondanceoui
strripos()dernière correspondancenon

Conclusion

strripos() localise la dernière occurrence insensible à la casse d'une sous-chaîne et renvoie son index, ou false en l'absence de correspondance. N'oubliez pas de tester le résultat avec !== pour qu'une correspondance en position zéro ne soit pas confondue avec un échec, et utilisez $offset (positif ou négatif) pour limiter la fenêtre de recherche. Si vous avez besoin de la première correspondance ou si la casse est importante, utilisez l'une des fonctions associées ci-dessus.

Pratique

Pratique
Que fait la fonction PHP strripos() ?
Que fait la fonction PHP strripos() ?
Was this page helpful?