# strrpos

(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

### Description

strrpos(string `$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`.

### Liste de paramètres

`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 derniers `offset` octets.

### Valeurs de retour

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.

Avertissement

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.

### Historique

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.

### Exemples

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
$mystring = 'Elephpant';
$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)

### Voir aussi

- strpos() - Cherche la position de la première occurrence dans une chaîne
- stripos() - Recherche la position de la première occurrence dans une chaîne, sans tenir compte de la casse
- strripos() - Cherche la position de la dernière occurrence d'une chaîne contenue dans une autre, de façon insensible à la casse
- strrchr() - Trouve la dernière occurrence d'un caractère dans une chaîne
- substr() - Retourne un segment de chaîne