PHP 8 viene con una serie de novedades muy útiles, como lo son: los argumentos con nombre o una nueva manera para definir constructores. Sin embargo, PHP 8 también trae muchas otras mejoras convenientes que pueden pasar desapercibidas al principio, cómo es la adición de 3 nuevas funciones para el manejo de cadenas.

Buscando cadenas con str_contains

La función str_contains comprueba si una cadena contiene otra cadena más pequeña. Esta función va a verificar si la cadena más pequeña existe, sin importar su posición exacta dentro de la cadena principal o si se trata de una cadena vacía. Posee la siguiente sintaxis:

//
str_contains( string $value , string $search ) : bool;

$value es la cadena principal y $search es la cadena más pequeña que se desea buscar dentro de $value.

Veamos los resultados que devuelve esta función en el siguiente ejemplo:

str_contains('abc', 'b'); // true;
str_contains('abc', 'd'); // false;

// Si la cadena a buscar está vacía:
str_contains('abc', ''); // true;
str_contains('', ''); // true;

En este ejemplo, al buscar b la función nos devolverá true ya que esta cadena se encuentra contenida en nuestra cadena principal, mientras que al buscar d la función nos devolverá false, puesto que el caracter d no se encuentra dentro de la cadena principal. En caso de que la cadena a buscar se encuentre vacía, la función siempre devolverá true.

En PHP el valor '' dentro de funciones de cadenas está definido como nulo y se considera que una cadena '' puede coincidir en cualquier posición al ser buscada dentro de otra. Por esta razón el resultado siempre retornará true.

Buscando cadenas según su ubicación con str_starts_with y str_ends_with

Además de la función str_contains que busca una cadena dentro de otra sin importar su posición, PHP 8 nos ofrece las funciones str_starts_withstr_ends_with que realizan la búsqueda tomando en cuenta si la cadena a buscar se encuentra al principio o al final de la cadena principal.

En esencia, str_starts_with comprueba si la cadena a buscar se encuentra al inicio de la cadena principal, mientras que str_ends_with comprueba si se encuentra al final:

$value = 'abc';

str_starts_with ($value, 'a'); //true 
str_ends_with($value, 'a'); //false 

str_starts_with($value, 'c'); //false 
str_ends_with($value, 'c'); //true 

str_starts_with($value, 'b'); //false 
str_ends_with($value, 'b'); //false

Cómo puedes ver en el primer ejemplo, si buscamos la cadena a dentro de la cadena abc, la función str_starts_with nos devolverá true pues a se encuentra al inicio de la cadena principal; mientras que str_ends_with nos retornará false al no encontrarse al final.

Las funciones str_contains, str_starts_with y str_ends_with son sensibles a mayúsculas y minúsculas, así que asegúrate de tener esto en cuenta al realizar búsquedas de cadenas utilizando estas funciones.

Te recomendamos, siempre que tenga sentido, usar estas funciones de PHP en lugar de strpos cuya sintaxis es menos amigable.

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Cambios a la comparación no estricta entre cadenas y números en PHP 8