Expresiones Regulares en PHP: Desde lo Básico hasta Técnicas Avanzadas
Las expresiones regulares (regex) son una herramienta poderosa para buscar, reemplazar y analizar datos de texto. En PHP, se implementan a través de un conjunto de funciones PCRE (Perl Compatible Regular Expressions). En este artículo, cubriremos los conceptos básicos del trabajo con expresiones regulares, examinaremos funciones clave y proporcionaremos ejemplos prácticos que te ayudarán a automatizar el procesamiento de cadenas.
1. Funciones Básicas para Trabajar con Expresiones Regulares en PHP
PHP proporciona varias funciones integradas para trabajar con expresiones regulares. Veamos las más populares.
preg_match() — Encontrar una Coincidencia
La función preg_match() verifica si una cadena coincide con un patrón dado. Devuelve 1 si se encuentra una coincidencia y 0 en caso contrario.
<?php$text = "¡Hola, mundo! PHP es increíble.";$pattern = "/PHP/";
if (preg_match($pattern, $text)) { echo "¡La palabra 'PHP' fue encontrada!";} else { echo "No se encontraron coincidencias.";}?>Si necesitas obtener la coincidencia en sí, pasa un tercer argumento: un arreglo para los resultados:
<?php$text = "Mi correo: usuario@ejemplo.com";$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "Correo encontrado: " . $matches[0];}?>preg_replace() — Reemplazo Basado en Patrones
La función preg_replace() reemplaza todas las coincidencias de un patrón con una cadena especificada. Es similar a str_replace(), pero con soporte para expresiones regulares.
<?php$text = "Hoy es 15.03.2024, y mañana será 16.03.2024";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1"; // Reordenando las partes de la fecha
echo preg_replace($pattern, $replacement, $text);// Muestra: Hoy es 2024-03-15, y mañana será 2024-03-16?>preg_split() — Dividir una Cadena
La función preg_split() divide una cadena usando una expresión regular. Esto es más conveniente que explode() cuando los delimitadores pueden ser diferentes.
<?php$text = "manzana, pera; plátano: naranja";$pattern = "/[,;:]/"; // Delimitadores: coma, punto y coma, dos puntos$fruits = preg_split($pattern, $text);
print_r($fruits);// Array ( [0] => manzana [1] => pera [2] => plátano [3] => naranja )?>2. Metacaracteres y Sintaxis de las Expresiones Regulares
Para usar expresiones regulares de manera efectiva, necesitas entender su sintaxis. Aquí están los metacaracteres básicos:
.— cualquier carácter (excepto nueva línea)^— inicio de la cadena$— fin de la cadena*— 0 o más repeticiones+— 1 o más repeticiones?— 0 o 1 repetición\\d— dígito (0-9)\\w— letra, dígito o guion bajo\\s— carácter de espacio en blanco[abc]— cualquier carácter del conjunto(...)— grupo de captura
Ejemplo: Validación de número de teléfono
<?php$phone = "+7 (123) 456-78-90";$pattern = "/^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$/";
if (preg_match($pattern, $phone)) { echo "¡El número de teléfono es válido!";} else { echo "Formato de número de teléfono inválido.";}?>3. Técnicas Avanzadas y Modificadores
Los modificadores cambian el comportamiento de una expresión regular. Se especifican después de la barra de cierre. Veamos los más útiles:
i— búsqueda sin distinción de mayúsculas/minúsculasm— modo multilínea (^ y $ funcionan para cada línea)s— el punto incluye el carácter de nueva líneau— soporte para UTF-8