Introducción

En algunas ocasiones necesitaremos encontrar la posición de un carácter en una cadena. Por ejemplo, el índice de una letra, un punto, un salto de línea, etcétera.

Esta función también es conocida como indexOf, algo así como índice de. En PHP contamos con dos funciones para esto, que al final nos pueden terminar confundiendo: strpos y strrpos (sí, una tiene doble r).

Veamos entonces cómo podemos aprovechar cada una de ellas.

strpos

Esta función devuelve el índice de la primer ocurrencia de un carácter en una cadena. Por ejemplo, tenemos lo siguiente:

Esta es una cadena

Si ejecutamos strpos buscando la letra “s” nos dará el índice 1, aunque hay otra s en la posición 6.

Nota: esta función devuelve false si es que no se encuentra lo que buscamos.

strrpos

Esta función es parecida a la anterior, pero comienza a buscar desde el final de la cadena. Si ejecutamos strrpos sobre la cadena del ejercicio anterior, ahora sí nos dará 6.

Nota: esta función devuelve false si es que no se encuentra lo que buscamos (igual que la anterior).

Resultados

Lo anterior escrito puede ser comprobado en este replit que dejo a continuación. Podemos ver que strpos y strrpos son llamados y ambos devuelven resultados distintos.

Haz click en el botón de play.

Comprobar si una cadena tiene determinado carácter

Como dijimos que las funciones devuelven false en caso de no encontrar el carácter, podemos usarlas para ver si una cadena contiene una letra o carácter.

Relacionado:  C y C++ | Validar si carácter es letra

Por ejemplo, supongamos que necesitamos que una cadena no tenga saltos de línea ni puntos. Para ello podemos probar con lo siguiente:

$cadenaMala = "Este es\nun ejemplo de cadena.";
if(strpos($cadenaMala, ".") === false && strpos($cadenaMala, "\n") === false )
 echo "Está bien"; 
else echo "Está mal";

Como se ve, buscamos primero si tiene algún punto, y después un salto de línea. Aquí se puede comprobar:

Ejemplo práctico: extensión de un archivo

Para terminar con esto haremos una función que devuelva la extensión de un archivo. Por ejemplo, si el nombre es “libro.pdf” debería devolver “pdf”.

Para esto podríamos usar strpos (comienza desde el inicio) pero habría un error, ya que si un archivo se llama “matemáticas.1.pdf” pensaría que la extensión es “1.pdf” cosa que es un error.

Entonces será mejor usar strrpos en conjunto con substr, para cortar la cadena desde donde se encuentre el último punto. La función queda así:

Y para probarla directamente podemos hacer click en el botón de play:

Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 390 suscriptores

Categorías: phpweb

parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

1 Comment

PHP: Comprobar si cadena contiene subcadena - Parzibyte's blog · abril 4, 2019 a las 4:27 pm

[…] Esta función trabaja como indexOf en JavaScript, devuelve el índice o posición de una cadena o carácter en otra cadena, como se vio en otro post. […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: