PHP 8: Uso de str_contains() para comprobar si una cadena contiene una subcadena
En PHP 8, la verificación de si una cadena contiene una subcadena es ahora más sencilla y elegante gracias a la función str_contains(). Esta función, que devuelve un valor booleano (true o false), simplifica la comprobación de la presencia de una subcadena dentro de una cadena principal. Esta función es una adición muy útil, especialmente cuando se trata de validar datos de entrada, analizar texto o realizar comparaciones de cadenas.
En versiones anteriores de PHP, la función strpos() se utilizaba para lograr el mismo objetivo. Sin embargo, strpos() devuelve la posición de la subcadena en la cadena principal o false si no se encuentra. Esta diferencia en la salida puede llevar a una lógica adicional y a un código más complejo cuando se utiliza strpos() para comprobar simplemente la presencia o ausencia de una subcadena.
Explorando la función str_contains()
La función str_contains() acepta dos argumentos: la cadena principal y la subcadena que se busca. Si la subcadena se encuentra dentro de la cadena principal, la función devuelve true. De lo contrario, devuelve false.
«`php
if (str_contains($cadena, $subcadena)) {
echo «La cadena ‘$cadena’ contiene la subcadena ‘$subcadena'»;
} else {
echo «La cadena ‘$cadena’ no contiene la subcadena ‘$subcadena'»;
}
?>
«`
Este código mostrará:
La cadena 'Hola mundo!' contiene la subcadena 'mundo'
Comparación con strpos()
Si bien str_contains() es la función preferida para comprobar la presencia de una subcadena en PHP 8, strpos() sigue siendo compatible. Sin embargo, strpos() tiene la desventaja de requerir una comprobación adicional para determinar si la subcadena está presente o no, debido a su comportamiento de retorno.
«`php
if (strpos($cadena, $subcadena) !== false) {
echo «La cadena ‘$cadena’ contiene la subcadena ‘$subcadena'»;
} else {
echo «La cadena ‘$cadena’ no contiene la subcadena ‘$subcadena'»;
}
?>
«`
Este código produce la misma salida que el código anterior, pero requiere la comparación adicional !== false para garantizar que la subcadena está presente.
Casos de uso de str_contains()
str_contains() tiene una variedad de aplicaciones útiles, incluyendo:
-
Validación de datos de entrada: Puede asegurarse de que los datos ingresados por el usuario cumplan con un formato específico, por ejemplo, comprobar si un correo electrónico contiene el símbolo «@» o si una contraseña contiene al menos una letra mayúscula.
-
Análisis de texto: Puede analizar texto para buscar palabras clave, frases o patrones específicos. Por ejemplo, puede utilizar
str_contains()para identificar si un artículo contiene palabras clave relevantes o si un comentario contiene palabras ofensivas. -
Comparación de cadenas: Puede comparar cadenas para determinar si una cadena es un subconjunto de otra cadena. Por ejemplo, puede utilizar
str_contains()para comprobar si un nombre de archivo es válido o si una dirección web es válida.
Ejemplo práctico: Validación de contraseñas
Aquí hay un ejemplo de cómo utilizar str_contains() para validar contraseñas. El código comprobará si la contraseña contiene al menos una letra mayúscula, una letra minúscula y un dígito.
«`php
contains($contraseña, «ABCDEFGHIJKLMNOPQRSTUVWXYZ»)) {
return false;
}
if (!strcontains($contraseña, «abcdefghijklmnopqrstuvwxyz»)) {
return false;
}
if (!str_contains($contraseña, «0123456789»)) {
return false;
}
return true;
}
$contraseña = «MiContraseña123»;
if (validarContraseña($contraseña)) {
echo «Contraseña válida»;
} else {
echo «Contraseña inválida»;
}
?>
«`
Este código demostrará la utilidad de la función str_contains() en un escenario práctico.
Conclusión
La función str_contains() es una adición bienvenida a PHP 8 que simplifica la verificación de la presencia de una subcadena dentro de una cadena. Es una herramienta poderosa que puede ser utilizada en una variedad de escenarios, incluyendo la validación de datos de entrada, el análisis de texto y la comparación de cadenas.
A pesar de que strpos() todavía es compatible, str_contains() es la opción preferida debido a su mayor claridad y simplicidad, especialmente para casos donde solo se necesita comprobar si una subcadena está presente.