(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
.
haystack
La 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
needle
avant les derniersoffset
octets.
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)