(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Busca la posición de la última ocurrencia de una subcadena en una cadena
Busca la posición numérica de la última ocurrencia de
needle en la cadena haystack.
haystackLa cadena en la que buscar.
needleLa cadena a buscar.
Anterior a PHP 8.0.0, si needle no es una cadena de caracteres,
se convierte en un entero y se aplica como valor ordinal de un carácter.
Este comportamiento está obsoleto a partir de PHP 7.3.0, y confiar en él
está fuertemente desaconsejado. Dependiendo del comportamiento esperado,
needle debe ser explícitamente convertido a una cadena de caracteres,
o debe realizarse una llamada explícita a chr().
offset
Si es cero o positivo, la búsqueda se realiza de izquierda a derecha
omitiendo los primeros offset bytes de
haystack.
Si es negativo, la búsqueda comienza a offset bytes de la derecha
en lugar de desde el inicio de haystack.
La búsqueda se realiza de derecha a izquierda, buscando la primera
ocurrencia de needle desde el byte seleccionado.
Nota:
Esto es efectivamente equivalente a buscar la última ocurrencia de
needleen o antes de los últimosoffsetbytes.
Devuelve la posición de la última ocurrencia de needle
en relación con el inicio de la cadena haystack
(independientemente de la dirección de búsqueda o del offset).
Nota: Las posiciones de los string comienzan en 0, y no en 1.
Devuelve false si needle no ha sido encontrado.
Esta función puede retornar false, pero también puede retornar un valor equivalente a false.
Por favor, lea la sección sobre los booleanos para más información.
Utilice el operador ===
para probar el valor de retorno exacto de esta función.
| Versión | Descripción |
|---|---|
| 8.0.0 |
needle acepta ahora una cadena vacía.
|
| 8.0.0 |
Pasar un entero como needle ya no está soportado.
|
| 7.3.0 |
Pasar un entero como before_needle ha sido
declarado obsoleto.
|
Ejemplo #1 Verifica si una ocurrencia es encontrada en una cadena
Es fácil cometer un error con respecto al valor devuelto entre "carácter encontrado en la posición 0" y "carácter no encontrado". A continuación se muestra cómo detectar esta diferencia:
<?php
$mystring = 'Elephpant';
$pos = strrpos($mystring, "b");
if ($pos === false) { // nota: 3 signos "="
// no encontrado...
}
?>
Ejemplo #2 Búsqueda con posiciones
<?php
$foo = "0123456789a123456789b123456789c";
// Buscar '0' desde el byte 0 (desde el inicio)
var_dump(strrpos($foo, '0', 0));
// Buscar '0' desde el primer byte (después del byte "0")
var_dump(strrpos($foo, '0', 1));
// Buscar '7' desde el byte 21 (después del byte 20)
var_dump(strrpos($foo, '7', 20));
// Buscar '7' desde el byte 29 (después del byte 28)
var_dump(strrpos($foo, '7', 28));
// Buscar '7' de derecha a izquierda desde el quinto byte desde el final
var_dump(strrpos($foo, '7', -5));
// Buscar 'c' de derecha a izquierda desde el segundo byte desde el final
var_dump(strrpos($foo, 'c', -2));
// Buscar '9c' de derecha a izquierda desde el segundo byte desde el final
var_dump(strrpos($foo, '9c', -2));
?>El ejemplo anterior mostrará :
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)