A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Full-Stack Software Developer - 16w

Data Science and Machine Learning - 16 wks

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones

Weekly Coding Challenge

Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!

Únete al reto

Podcast: Code Sets You Free

Un podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.

Escuchar el podcast
Editar en Github

¿Cómo usar Expresiones Regulares en PHP?

Expresiones regulares PHP

Expresiones regulares PHP

Las expresiones regulares en PHP se pueden utilizar para la validación y extracción de datos, la manipulación de cadenas y más! Aquí hay un ejemplo del uso de expresiones regulares en PHP para validar un correo electrónico:

1$patron = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/"; 2$correo = "ejemplo@email.com"; 3 4if (preg_match($patron, $correo)) { 5 echo("El correo electrónico es válido"); 6} else { 7 echo("El correo electrónico es invalido"); 8};

Este código es un buen ejemplo del uso que le puedes dar a las expresiones regulares en php, este ejemplo utiliza un estructura condicional if() para comprobar si una cadena de texto coincide con el patrón de un correo electrónico, de ser así entra en la estructura condicional de lo contrario significa que la cadena de texto no coincide con el patrón de expresiones regulares.

¿Qué son las expresiones regulares en PHP?

Las expresiones regulares (regex o regexp) en PHP son una secuencia de caracteres que definen un patrón de coincidencia /[a-z]/i. Este patrón nos permite verificar si una cadena de texto (o parte de ella) coincide con el patrón regex proporcionado, también nos permite modificar los caracteres de la cadena que coinciden con este este patrón.

Las expresiones regulares se utilizan en la mayoría de los lenguajes de programación con una estructura muy similar, estos patrones de expresiones regulares son muy útiles a la hora de validar correos electrónicos, teléfonos, contraseñas y muchas cosas más.

Ejemplos de expresiones regulares

expresión regulardescripción
/[a-z]/iEsta expresión regular busca todas las letras de la "a" a la "z" en una cadena de texto y es insensible a mayúsculas o minúsculas.
/[0-9]/Está expresión regular busca todos los números del "0" al "9" individualmente de una cadena de texto.
'/^\+\d{2,3} \d{3} \d{3} \d{4}$/'Está expresión regular verifica que un número de telefono tenga una estructura adecuada +01 111 111 1111.
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/}Esta expresión regular verifica que un correo electrónico tenga una estructura correcta y válida.
/^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()-=_+{};:,<.>]).{8,20}$/Esta expresión regular verifica que una contraseña sea segura con al menos, una letra mayúscula, un número, un símbolo, al menos 8 caracteres y menos de 20 caracteres.

¿Cómo trabajar con expresiones regulares en PHP?

Existen diferentes formas de trabajar con expresiones regulares en php, este lenguaje nos ofrece varios métodos que nos permiten trabajar con expresiones regulares veremos algunos de ellos a continuación.

Método preg_match()

El método preg_match realiza una comparación entre una expresión regular y una cadena de texto y retorna la primera coincidencia.

1$patron = "/PRUEBA/i"; 2$texto = "Este texto es una prueba"; 3 4$resultado = preg_match( 5 $patron, // parámetro con la expresión regular 6 $texto, // parámetro con la cadena de texto a comparar 7 $coincidencia, // array con la primera coincidencia encontrada 8 PREG_OFFSET_CAPTURE, // parámetro que te permite acceder al índice donde encuentra la coincidencia 9 $indice_inicial = 0 // parámetro que te indica el índice desde el cual empieza a buscar 10); 11 12echo $resultado; // (output) 1 13print_r($coincidencia[0]);

(output) de la variable $coincidencia[0]

1Array([0] => 2 Array 3 ( 4 [0] => prueba // valor 5 [1] => 18 // indice del valor en el array 6 ) 7)

Cómo se muestra en el ejemplo este método puede recibir varios parámetros pero no todos son obligatorios solo el primero y el segundo parámetro son obligatorios los demás son opcionales.

En este ejemplo la función preg_match retorna un 1 si encuentra una coincidencia con el texto o retorna 0 en el caso de lo contrario, este valor se guarda el la variable $resultado. La variable $coincidencia es un array que guarda la primera coincidencia que encuentra.

Otro ejemplo en el que podemos hacer uso del método preg_match es para verificar un correo electrónico.

1$patron = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/"; 2$correo = "ejemplo@email.com"; 3 4if (preg_match($patron, $correo)) { 5 echo("El correo electrónico es válido"); 6} else { 7 echo("El correo electrónico es invalido"); 8};

En este ejemplo verificamos si un correo electrónico es válido, si el correo electrónico coincide con el patrón de la expresión regular entonces entra en la estructura condicional de lo contrario significa que el correo electrónico no es válido.

Otro caso en el que podemos usar el método preg_match es para verificar un número telefónico.

1$patron = '/^\+\d{2,3} \d{3} \d{3} \d{4}$/'; 2$número = "+01 111 111 1111"; 3 4if (preg_match($patron, $número)) { 5 echo "El número telefónico es válido"; 6} else { 7 echo "El número telefónico es invalido"; 8};

Si el número de teléfono cumple con el patrón +00 000 000 0000 entonces entra en la estructura condicional, de lo contrario significa que el número es invalido. De está forma podemos tener control y trabajar solo con los números que coinciden con el patrón que deseamos.

Método preg_match_all()

El método preg_match_all realiza una comparación global entre un patron de expresión regular y una cadena de texto y luego retorna todas las coincidencias.

1$patron = "/\b(?![0-9]+\b)\p{L}+\b/ui"; // Patron para busca palabras 2$cadena = "Hola mundo, éste es un ejemplo 1234."; 3 4$resultado = preg_match_all( 5 $patron, // parámetro con la expresión regular 6 $cadena, // parámetro con la cadena de texto a comparar 7 $coincidencias, // array con todas las coincidencias encontradas 8 PREG_OFFSET_CAPTURE, // parámetro que te permite acceder al índice donde encuentra las coincidencias 9 $indice_inicial = 0 // parámetro que indica el índice desde el cual empieza a buscar 10); 11 12print_r($resultado); // (output) 6 / número de coincidencias encontradas 13print_r($coincidencias[0]); 14

(output) de la variable $coincidencias[0]

1Array 2( 3 [0] => Array([0] => Hola [1] => 0) 4 [1] => Array([0] => este [1] => 6) 5 [2] => Array([0] => es [1] => 11) 6 [3] => Array([0] => un [1] => 14) 7 [4] => Array([0] => ejemplo [1] => 17) 8)

Cómo vemos en este ejemplo este método también puede recibir varios parámetros pero solo los dos primero son obligatorios los demás son opcionales.

En este ejemplo el método preg_match_all retorna la cantidad de elementos que coinciden con el patrón de expresiones regulares que se guarda en la variable $resultado. Por otro lado, todas las coincidencias que encuentra las guarda en la variable $coincidencias junto con el indice donde las encuentra.

Otro ejemplo donde podemos usar el método preg_match_all es para buscar etiquetas HTML en una cadena de texto.

1$texto = "<h1>Prueba</h1><p>Este es un párrafo de prueba.</p><img src='imagen.jpg'/>"; 2$patron = "/<(\w+)[^>]*>/"; // Busca todas las etiquetas HTML de apertura 3 4preg_match_all($patron, $texto, $coincidencias); 5 6$etiquetas = $coincidencias[0]; 7print_r($etiquetas);

(output) de la variable $etiquetas

1Array 2 ( 3 [0] => <h1> 4 [1] => <p> 5 [2] => <img src='imagen.jpg'/> 6 )

En este ejemplo usamos el método preg_match_all para buscar etiquetas de apertura HTML en una cadena de texto. El array con las etiquetas se guarda en la variable $etiquetas.

Método preg_replace()

El método preg_replace sustituye un patrón de caracteres en una cadena de texto por el valor que deseas asignarle.

1$cadena_texto = "El color favorito de alex es el azul."; 2$patron = "/alex/i"; 3$reemplazo = "tom"; 4 5$resultado = preg_replace( 6 $patron, // parámetro con la expresión regular 7 $reemplazo, // parámetro con el texto de reemplazo 8 $cadena_texto, // parámetro con la cadena de texto a reemplazar 9 $limite = -1 // cantidad de elementos que se deben reemplazar 10); 11 12echo $resultado; // (output) El color favorito de tom es el azul.

Este método puede recibir hasta cuatro parámetros aunque solo tres de ellos son requeridos, el cuarto parámetro es opcional y representa la cantidad de elementos que se deben reemplazar, por defecto tiene el valor -1 lo que significa que cambia todos los elementos que coincidan con el patrón proporcionado.

En este ejemplo el método realiza el cambio y guarda el texto actualizado en la variable $resultado;

Otra forma en la que podemos usar el método preg_replace es para reemplazar una etiqueta HTML por otra en una cadena de texto.

1$cadena = "<p>Ejemplo uno</p>, <p>ejemplo dos</p>, <p>ejemplo tres</p>"; 2$patron = "/<p>(.*?)<\/p>/"; 3$reemplazo = "<span>$1</span>"; 4 5$resultado = preg_replace($patron, $reemplazo, $cadena, $limite = 2); 6echo $resultado; // (output) "<span>Ejemplo uno/span>, <span>ejemplo dos</span>, <p>ejemplo dos</p>"

En este ejemplo usamos el método preg_replace para reemplazar las etiquetas <p> en una cadena de texto por una etiqueta <span>.

El texto actualizado con las etiquetas <span> se guardan en la variable $resultado y al pasarle la variable $limite = 2 cambia solo las dos primeras coincidencias que encuentra.

Conclusión

En resumen las expresiones regulares nos permiten definir patrones de coincidencia y aplicar estos patrones a cadenas de texto para verificar, extraer o modificar los caracteres que coinciden con este patrón.

Es importante resaltar que existen más formas y métodos para trabajar con expresiones regulares que las mencionadas en este artículo. Este artículo ofrece ejemplos sencillos y fáciles de entender de expresiones regulares para que te familiarices con el concepto de expresiones regulares en PHP. Si deseas conocer mas sobre temas relacionados como las expresiones regulares en Javascript u otros puedes buscarlos en el Blog de 4Geeks.