mb_strrpos throws a warning if $haystack is empty.
strrpos simply returns FALSE.
This is something to be wary of if overloading the mb functions.(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_strrpos — Repère la dernière occurrence d'un caractère dans une chaîne
$haystack,$needle,$offset = 0,$encoding = null
mb_strrpos() effectue une recherche de type
strpos(), en tenant compte des caractères
multioctets. La position de needle est comptée
à partir du début de la chaîne haystack : les
positions commencent à 0.
haystackLa chaîne à analyser.
needle
La chaîne à chercher dans la chaîne haystack.
offset
Peut spécifier la position de départ de la recherche à partir d'un certain nombre de caractères arbitraire
dans haystack. Les valeurs négatives arrêtent la recherche à partir d'une position arbitraire
depuis la fin de haystack.
encodingLe paramètre encoding
est l'encodage des caractères. S'il est omis ou null, l'encodage de caractères interne
sera utilisé.
Retourne la position numérique de
la dernière occurrence du caractère needle dans la
chaîne haystack. Si needle est
introuvable, mb_strrpos() retourne false.
Si offset est supérieur à la longueur de
haystack, une
ValueError sera levée.
À partir de PHP 8.0.0, une ValueError est levée si
encoding est un encodage invalide.
Avant PHP 8.0.0, un E_WARNING était émis à la place.
| Version | Description |
|---|---|
| 8.0.0 |
needle accepte désormais une chaîne vide.
|
| 8.0.0 |
Passer encoding comme troisième argument
au lieu de offset a été supprimé.
|
| 8.0.0 |
encoding est désormais nullable.
|
| 8.0.0 |
Lève désormais une ValueError si
encoding est un encodage invalide.
Auparavant, un E_WARNING était émis
et false était retourné.
|
mb_strrpos throws a warning if $haystack is empty.
strrpos simply returns FALSE.
This is something to be wary of if overloading the mb functions."Negative values will stop searching at an arbitrary point prior to the end of the string. " ist misleading.
The needle may not fully part of searchrange, defined by a negative offset.
A negative offsets marks the last byte, where a search could start.
<?php
$test = "Hallo, Herr Gött";
var_dump(strlen($test)); // int(17)
var_dump(mb_strrpos($test,'ött',13)); // int(13)
var_dump(mb_strrpos($test,'ött',-4)); // int(13) 17-4 = 13
var_dump(mb_strrpos($test,'ött',-5)); // bool(false)
?>