(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
.
haystack
La cadena en la que buscar.
needle
La cadena a buscar.
Si needle
no es una cadena, se convierte
a un entero y se aplica como el valor ordinal de un carácter.
Este comportamiento está obsoleto a partir de PHP 7.3.0, por lo que su uso está totalmente
desaconsejado. Dependiendo del comportamiento previsto,
needle
deberá ser convertido explícitamente a string,
o realizar 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
needle
en o antes de los últimosoffset
bytes.
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 chaîne de caractères comienzan en 0, y no en 1.
Devuelve false
si needle
no ha sido encontrado.
Esta función puede
devolver el valor booleano false
, pero también puede devolver un valor no booleano que se
evalúa como false
. Por favor lea la sección sobre Booleanos para más
información. Use el operador
=== para comprobar el valor devuelto por esta
función.
Versión | Descripción |
---|---|
8.0.0 |
needle now accepts an empty string.
|
8.0.0 |
Pasar un entier como needle ya no está soportado.
|
7.3.0 |
Pasar un entier 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 resultado del ejemplo sería:
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)