strrpos
En esta página
strrpos
Busca la posición de la última ocurrencia de una subcadena en una cadena
Descripción#
strrpos(string $haystack, string $needle, [int $offset]): int
```php
Busca la posición numérica de la última ocurrencia de `needle` en la cadena `haystack`.
## Parámetros
`haystack`
La cadena en la que buscar.
`needle`
La 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.
> [!NOTE]
> Esto es efectivamente equivalente a buscar la última ocurrencia de `needle` en o antes de los últimos `offset` bytes.
## Valores devueltos
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).
> [!NOTE]
> Las posiciones de los `string` comienzan en 0, y no en 1.
Devuelve `false` si `needle` no ha sido encontrado.
> [!WARNING]
> 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](#language.types.boolean) para más información. Utilice el [operador ===](#language.operators.comparison) para probar el valor de retorno exacto de esta función.
## Errores/Excepciones
- Si `offset` es mayor que la longitud de `haystack`, se lanzará un `ValueError`.
## Historial de cambios
| Versión | Descripción |
|---------|-----------------------------------------------------------------|
| 8.0.0 | `needle` acepta ahora una cadena vacía. |
| 8.0.0 | Pasar un `int` como `needle` ya no está soportado. |
| 7.3.0 | Pasar un `int` como `before_needle` ha sido declarado obsoleto. |
## Ejemplos
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:
Búsqueda con posiciones
```php
El ejemplo anterior mostrará:
int(0)
bool(false)
int(27)
bool(false)
int(17)
bool(false)
int(29)
Véase también#
strpos, stripos, strripos, strrchr, substr