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;
}
}
/**
* 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;
}
}
/** * 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
$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
$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