(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Cherche la position de la dernière occurrence d'une sous-chaîne dans une chaîne
$haystack, string $needle, int $offset = 0): int|false
Cherche la position numérique de la dernière occurrence de
needle dans la chaîne haystack.
haystackLa chaîne dans laquelle chercher.
needle
Antérieur à PHP 8.0.0, si needle n'est pas une chaîne de caractères,
elle est convertie en un entier et appliqué en tant que valeur ordinal d'un caractère.
Ce comportement est obsolète à partir de PHP 7.3.0, et se fier à celui-ci
est fortement déconseillé. En fonction du comportement attendu,
needle doit être transtypé explicitement en une chaîne de caractère,
ou un appel explicite à chr() doit être exécuté.
offset
Si zéro ou positif, la recherche est effectuée de gauche à droite
omettant les premiers offset octets de
haystack.
Si négatif, la recherche est effectuée de droite à gauche
omettant les derniers offset octets de
haystack et cherchant pour la première occurrence
de needle.
Note:
Ceci est effectivement à la recherche de la dernière occurrence de
needleavant les derniersoffsetoctets.
Retourne la position de la dernière occurrence de needle
relativement au début de la chaîne haystack
(indépendamment de la direction de recherche ou de l'offset).
Note: Les positions des chaîne de caractères débutent à 0, et pas à 1.
Retourne false si la needle n'a pas été trouvée.
Cette fonction peut retourner false, mais elle peut aussi retourner une valeur équivalent à false.
Veuillez lire la section sur les booléens pour plus d'informations.
Utilisez l'opérateur ===
pour tester la valeur de retour exacte de cette fonction.
| Version | Description |
|---|---|
| 8.0.0 |
Passing an entier as needle is no longer supported.
|
| 7.3.0 |
Passer un entier comme before_needle a été
rendu obsolète.
|
Exemple #1 Vérifie si une occurrence est trouvée dans une chaîne
Il est facile de faire une erreur quant à la valeur retournée entre "caractère trouvé à la position 0" et "caractère non trouvé". Voici comme détecter cette différence :
<?php
$pos = strrpos($mystring, "b");
if ($pos === false) { // note : 3 signes "="
// non trouvé ...
}
?>
Exemple #2 Recherche avec des positions
<?php
$foo = "0123456789a123456789b123456789c";
// Chercher pour '0' depuis l'octet 0 (depuis le début)
var_dump(strrpos($foo, '0', 0));
// Chercher pour '0' depuis le 1er octet (après l'octet "0")
var_dump(strrpos($foo, '0', 1));
// Chercher pour '7' depuis le 21ème octet (après l'octet 20)
var_dump(strrpos($foo, '7', 20));
// Chercher pour '7' depuis le 29ème octet (après l'octet 28)
var_dump(strrpos($foo, '7', 28));
// Chercher pour '7' de droite à gauche depuis le 5ème octet depuis la fin
var_dump(strrpos($foo, '7', -5));
// Chercher pour 'c' de droite à gauche depuis le 2ème octet depuis la fin
var_dump(strrpos($foo, 'c', -2));
// Chercher pour '9c' de droite à gauche depuis le 2ème octet depuis la fin
var_dump(strrpos($foo, '9c', -2));
?>
L'exemple ci-dessus va afficher :
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)