Devolver la posición de la última ocurrencia de un texto

Código PHP

PHP – String – Devolver última posición

Función que busca en un texto cual es la posición de la última ocurrencia de un texto determinado. Si no lo encuentra, devielve -1.

La busqueda es insensible a mayúsculas y minúsculas.

/**
 * Class HelperString
 */
abstract class HelperString
{

    /**
     * Devuelve la posición de la última ocurrencia en un texto.
     * Es indiferente a mayúsculas y minúsculas pero no a los acentos
     * Se puede delimitar hasta donde buscar.
     * Devuelve -1 si no existe, siendo 0 la primera posición
     *
     * @param string $txt
     * @param string $ocurencia
     * @param int    $pos_final_buscar
     *
     * @return int
     */
    public static function indexOfLast($txt, 
                                       $ocurencia, 
                                       $pos_final_buscar = 0)
    {
        $txt = HelperString::eliminarAcentos($txt);

        $ocurencia = HelperString::eliminarAcentos($ocurencia);
  
        $pos = strripos($txt, $ocurencia, -1 * $pos_final_buscar);
        if ($pos === false) {
            return -1;
        }
        return $pos;
    }
}

Ejemplos

$txt = 'abc0123456789_01234567890';
$pos = HelperString::indexOfLast($txt, '1');
print_r($pos);  // 15

$pos = HelperString::indexOfLast($txt, '1', 5);
print_r($pos);  // 15

$pos = HelperString::indexOfLast($txt, '1', 11);
print_r($pos);  // 4

$pos = HelperString::indexOfLast($txt, '1', 45);
print_r($pos);  // -1

$pos = HelperString::indexOfLast($txt, '123');
print_r($pos);  // 15

$pos = HelperString::indexOfLast($txt, '321');
print_r($pos);  // -1

$txt = '123_abc_456_def_ABC_890';
$pos = HelperString::indexOfLast($txt, 'BC');
print_r($pos);  // 17

$txt = '123_ábc_456_def_abc';
$pos = HelperString::indexOfLast($txt, 'áb');
print_r($pos);  // 4

$txt = '123_ábc_456_def';
$pos = HelperString::indexOfLast($txt, 'ab');
print_r($pos);  // -1