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
   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.
      
offsetencodingLe 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.
  
offset est supérieur à la longueur de
     haystack, une
     ValueError sera levée.
    
   | Version | Description | 
|---|---|
| 8.0.0 | needleaccepte désormais une chaîne vide. | 
| 8.0.0 | Passer encodingcomme troisième argument
       au lieu deoffseta été supprimée. | 
| 8.0.0 | encodingest désormais nullable. | 
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)
?>