(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
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
La chaîne à rechercher.
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 commence à offset
octets de la droite au lieu de depuis le début de haystack
. La recherche s'effectue de droite à gauche, cherchant la première occurrence de needle
à partir de l'octet sélectionné.
Note:
Ceci est effectivement équivalent à la recherche de la dernière occurrence de
needle
à ou 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 | needle accepte désormais une chaîne vide. |
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 "="
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)