strripos()
La función strripos() en PHP busca la última aparición de una subcadena sin distinguir mayúsculas en una cadena.
Introducción
La función strripos() en PHP encuentra la posición de la última aparición de una subcadena dentro de otra cadena, sin distinguir entre mayúsculas y minúsculas. El nombre se descompone como str (string) + r (reverse, es decir, búsqueda desde la derecha) + i (case-insensitive) + pos (posición).
Es la versión sin distinción de mayúsculas de strrpos(): strripos("Hello", "L") y strripos("Hello", "l") devuelven la misma posición, mientras que strrpos() trataría L y l como caracteres distintos.
Este capítulo cubre la sintaxis, el valor de retorno (y la trampa de false que debes evitar), el parámetro opcional $offset — incluidos los offsets negativos — y cómo strripos() se relaciona con las demás funciones de búsqueda en cadenas.
Sintaxis
strripos(string $haystack, string $needle, int $offset = 0): int|false| Parámetro | Descripción |
|---|---|
$haystack | La cadena en la que se realiza la búsqueda. |
$needle | La subcadena que se busca. |
$offset | Opcional. Dónde comenzar la búsqueda. Un valor positivo omite los primeros $offset caracteres; un valor negativo detiene la búsqueda esa cantidad de caracteres antes del final de la cadena. El valor predeterminado es 0. |
Valor de retorno: el índice de base cero de la última aparición encontrada, o false si $needle no se encuentra.
Compara siempre con !==
strripos() devuelve 0 cuando la coincidencia se encuentra al inicio de la cadena, y 0 es falsy en PHP. Una comprobación laxa como if (strripos(...)) trataría erróneamente una coincidencia en la posición cero como "no encontrado". Compara siempre con false usando el operador estricto !==:
<?php
$haystack = "Apple pie";
$pos = strripos($haystack, "a"); // matches "A" at index 0
if ($pos !== false) {
echo "Found at index $pos"; // Found at index 0
} else {
echo "Not found";
}Ejemplo básico
Hay dos caracteres o/O en Hello World — uno en Hello (índice 4) y otro en World (índice 7). Como strripos() reporta la última coincidencia, la salida es:
Found last occurrence of 'o' in 'Hello World' at position 7Coincidencia sin distinción de mayúsculas
La búsqueda trata las letras en mayúsculas y minúsculas como iguales, por lo que el uso de mayúsculas en $needle no importa:
<?php
$string = "Hello World, hello PHP";
echo strripos($string, "hello"), "\n"; // 13 — matches "hello" in "hello PHP"
echo strripos($string, "HELLO"), "\n"; // 13 — same match, case ignoredEl último hello/HELLO/Hello en la cadena comienza en el índice 13, independientemente de cómo se escriba la aguja.
Uso del parámetro $offset
Un offset positivo inicia la búsqueda después de los primeros $offset caracteres:
<?php
$string = "Hello World";
echo strripos($string, "o", 5), "\n"; // 7 — only the "o" in "World" is consideredUn offset negativo hace que la búsqueda se detenga esa cantidad de caracteres antes del final de la cadena, lo cual es útil para encontrar la última coincidencia en todo excepto una porción final:
<?php
$string = "abcabc";
echo strripos($string, "b", -2), "\n"; // 4 — last "b" within the truncated search windowFunciones relacionadas
Elige la función de búsqueda adecuada para cada situación:
strrpos()— igual questrripos()pero distingue mayúsculas.stripos()— encuentra la primera aparición sin distinción de mayúsculas.strpos()— encuentra la primera aparición con distinción de mayúsculas.strstr()— devuelve el resto de la cadena a partir de la primera coincidencia, en lugar de una posición.substr()— extrae una parte de la cadena una vez que conoces la posición.
| Función | Dirección | ¿Distingue mayúsculas? |
|---|---|---|
strpos() | primera coincidencia | sí |
stripos() | primera coincidencia | no |
strrpos() | última coincidencia | sí |
strripos() | última coincidencia | no |
Conclusión
strripos() localiza la última aparición sin distinción de mayúsculas de una subcadena y devuelve su índice, o false cuando no hay coincidencia. Recuerda comprobar el resultado con !== para que una coincidencia en la posición cero no se confunda con un fallo, y usa $offset (positivo o negativo) cuando necesites limitar la ventana de búsqueda. Cuando necesites la primera coincidencia, o cuando la distinción de mayúsculas sea importante, utiliza una de las funciones relacionadas mencionadas anteriormente.