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 — Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür
   Karakter sayısına dayalı olarak güvenilir bir çok baytlı
   strrpos() işlemi yürütür.
   iğne'nin ilk karakterinin yeri
   samanlık dizgesinin ilk karakterine göre hesaplanır.
   İlk karakterin indisi 0'dır.
  
samanlık
       Sonuncu iğne'nin aranacağı dizge.
      
iğne
       samanlık içinde sonuncusu aranacak dizge.
      
başlangıçsamanlık içinde aramanın başlatılacağı konum.
       Negatif bir değer samanlık dizgesinin son
       karakterine göre aramanın durdurulacağı konumu belirtir.
      
     kodlamakodlama
bağımsız değişkeninde karakter kodlaması belirtilir. Belirtilmediği takdirde veya
null ise dahili karakter
kodlaması kullanılır.
   Sonuncu iğne'nin samanlık
   içinde bulunduğu yerin indisi ile döner. Eğer
   samanlık içinde iğne yoksa
   false döndürür.
  
| Sürüm: | Açıklama | 
|---|---|
| 8.0.0 | Başlangıç bağımsız değişkenini kaldırmadan üçüncü bağımsız değişken olarak kodlamabağımsız değişkeni aktarılıyor. | 
| 8.0.0 | iğneartık boş dizge kabul ediyor. | 
| 8.0.0 | kodlamaartıknullolabiliyor. | 
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)
?>