strrpos

(PHP 4, PHP 5, PHP 7, PHP 8)

strrposCherche 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

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 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 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

$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