En este post vamos a ver cómo saber si una cadena tiene dentro otra cadena, es decir, si una cadena contiene una subcadena.
Por ejemplo, la cadena “hola” contiene la letra “l”, al igual que “hola mundo” contiene “mundo”.
Veremos cómo comprobar si una cadena contiene otra usando PHP y strpos
.
La función strpos
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.
Aprovechando el funcionamiento de strpos podemos comprobar si el mismo devuelve false, y en caso de que así sea, se dice que la cadena no contiene la subcadena.
Comprobar si cadena contiene subcadena en PHP
Pero basta de charlas, veamos el código. He escrito una función que encierra todo esto y queda de la siguiente manera:
#<?php
/*
Saber si cadena contiene una subcadena usando php
Recomendado: https://parzibyte.me/blog/2017/12/25/indice-posicion-caracter-cadena-php/
*/
function cadena_contiene_subcadena($cadena, $subcadena){
return strpos($cadena, $subcadena) !== false;
}
# Probar
var_dump(cadena_contiene_subcadena("Hola", "o")); # true
var_dump(cadena_contiene_subcadena("Hola mundo", "mundo")); # true
var_dump(cadena_contiene_subcadena("Parzibyte", "hola")); # false
var_dump(cadena_contiene_subcadena("Ejemplo", "no")); # true
var_dump(cadena_contiene_subcadena("1234", "1")); # true
var_dump(cadena_contiene_subcadena("Hola, me llamo Luis", ",")); # true
var_dump(cadena_contiene_subcadena("con espacios", " ")); # true
La función de PHP devuelve un booleano indicando si la subcadena se encuentra dentro de la cadena; en el mismo código se demuestra su uso.
Cabe mencionar que esto es sensible a mayúsculas y minúsculas, por lo que si se quiere comprobar de manera insensible se tendrían que convertir ambas cadenas a la misma notación.