Expresiones regulares en PHP

Las expresiones regulares son una característica que ofrecen una gran potencial en PHP. Permiten buscar, validar, y manipular cadenas de texto de forma eficiente. Conocer su uso y aplicación práctica es clave para todo desarrollador. Su versatilidad nos abre un amplio abanico de posibilidades para incorporar en nuestros desarrollos.

En este artículo, aprenderemos cómo utilizar expresiones regulares en PHP. Veremos desde los conceptos básicos hasta ejemplos prácticos aplicables a proyectos reales.

Expresiones regulares en PHP

¿Qué son las expresiones regulares?

Las expresiones regulares (o regex, por su abreviación en inglés) son patrones utilizados para realizar coincidencias en cadenas de texto. Estas coincidencias pueden ser tan simples como buscar una palabra específica o tan complejas como validar un formato de correo electrónico.

PHP utiliza la biblioteca PCRE (Perl Compatible Regular Expressions) para trabajar con expresiones regulares.

Funciones principales para trabajar con expresiones regulares en PHP

PHP ofrece dos tipos principales de funciones para manejar regex:

  1. Funciones preg_: trabajan con expresiones regulares compatibles con Perl. Entre ellas encontramos:
    • preg_match(): busca una coincidencia en una cadena.
    • preg_match_all(): busca todas las coincidencias posibles.
    • preg_replace(): reemplaza coincidencias encontradas.
    • preg_split(): divide una cadena en un array según un patrón.
  2. Sintaxis básica de patrones en PHP: los patrones se definen entre delimitadores (/). Ejemplo: /abc/.

Casos de uso comunes con ejemplos

Para esta sección preparé 4 ejemplos prácticos que explican algunas de las situaciones más comunes para las cuales las expresiones regulares puede ser de gran utilidad en nuestros proyectos.

1. Validación de datos

    Uno de los casos de uso más común para las expresiones regulares es la validación de datos. A continuación veremos un ejemplo de código para validar de manera simple direcciones de correo electrónico con expresiones regulares:

    $email = "test@damiandeluca.com.ar";
    
    $patron = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
    
    if (preg_match($patron, $email)) {
        echo "Correo electrónico válido.";
    } else {
        echo "Correo electrónico no válido.";
    }

    Ahora vamos con la explicación del patrón:

    • ^ y $: indican el inicio y fin de la cadena.
    • [a-zA-Z0-9._%+-]+: busca caracteres válidos para el nombre del correo.
    • @: Requiere el símbolo @.
    • [a-zA-Z0-9.-]+: permite caracteres para el dominio.
    • \.[a-zA-Z]{2,}: verifica una extensión de dominio de al menos 2 caracteres.

    2. Extraer contenido

    Otra situación donde nos puede resultar de gran utilidad recurrir a expresiones regulares es cuando necesitamos extraer datos de un contenido. En el siguiente ejemplo veremos como extraer números de una cadena de texto (string) guardada en una variable (llamada $texto).

    $texto = "El producto cuesta 50 dólares y el envío 10 dólares.";
    
    $patron = "/\d+/";
    
    preg_match_all($patron, $texto, $resultados);
    
    print_r($resultados[0]);

    El resultado quedará guardado en un array y el resultado lo podemos ver de la siguiente forma:

    Array
    (
        [0] => 50
        [1] => 10
    )

    La explicación del patrón:

    • \d: representa un dígito.
    • +: indica que puede haber uno o más dígitos consecutivos.

    3. Reemplazar palabras específicas

    Las opciones de reemplazar son muy útiles en todos los lenguajes de programación. Mediante las expresiones regulares, PHP tiene una herramienta muy potente y simple de implementar para realizar este trabajo. A continuación veremos como reemplazar un término dentro de un texto:

    $texto = "PHP es un lenguaje de programación. PHP lleva décadas en el mercado.";
    $patron = "/PHP/";
    $reemplazo = "Python";
    
    $resultado = preg_replace($patron, $reemplazo, $texto);
    
    echo $resultado;

    El resultado en pantalla se verá como el siguiente:

    Python es un lenguaje de programación. Python lleva décadas en el mercado.

    4. Dividir una texto en palabras

    La capacidad de dividir un texto en palabras tiene muchos casos de uso. El uso de un patrón basado en expresiones regulares nos puede simplificar esta tarea, como veremos en el código a continuación:

    $frase = "Aprender PHP es útil, emocionante y divertido.";
    $patron = "/[\s,]+/";
    
    $palabras = preg_split($patron, $frase);
    
    print_r($palabras);

    El resultado del código anterior queda guardado en la variable $palabras como un array. A continuación veremos la salida que muestra print_r($palabras).

    Array
    (
        [0] => Aprender
        [1] => PHP
        [2] => es
        [3] => útil
        [4] => emocionante
        [5] => y
        [6] => divertido
    )
    

    La explicación del patrón es muy sencilla:

    • [\s,]+: busca uno o más espacios o comas.

    Buenas prácticas al usar expresiones regulares en PHP

    A continuación veremos 3 recomendaciones clave a la hora de trabajar con expresiones regulares:

    1. Comprobar el rendimiento. Los patrones complejos pueden ser costosos en cuanto a recursos. Siempre que sea posible debemos optar por patrones simples y claros.
    2. Escapar caracteres especiales. Si un patrón incluye caracteres como . o *, podemos recurrir a secuencias de escapa (\. o \*). Esto resulta útil si necesitamos que se interpreten como «meta-caracteres».
    3. Usar delimitadores alternativos. Si el patrón contiene muchas barras /, es posible usar otros delimitadores como para mejorar la legibilidad.

    Ahora veamos algunos errores comunes al usar expresiones regulares en PHP:

    1. No delimitar el inicio y el fin de la cadena. Si no usamos ^ y $, el patrón puede coincidir en cualquier parte de la cadena.
    2. Olvidar manejar errores. Las funciones preg_ devuelven false en caso de error. Verifica siempre el resultado.

    En conclusión

    A la hora de aprender PHP, siempre recomiendo fortalecer los conceptos de base del lenguaje antes de introducirnos al mundo de las expresiones regulares. Este consejo está destinado especialmente a quienes no tienen experiencia previa en otros lenguajes de programación. Es fundamental manejar conceptos de lógica y dominar la sintaxis del lenguaje antes de dar el salto a características más avanzadas.

    Las expresiones regulares son una herramienta imprescindible para cualquier desarrollador PHP. Desde validar entradas del usuario hasta manipular grandes volúmenes de texto, estas ofrecen una solución versátil y eficiente. Dominar su uso te permitirá escribir código más eficiente y robusto.

    Si te quedan dudas o te interesa saber más sobre PHP dejame un comentario o escribeme un mensaje.

    Más sobre Diseño y desarrollo Web


    Acerca de

    Autor de los libros: Webmaster Profesional, HTML5: Comprenda el cambio y Apps HTML5 para móviles. Soy especialista en Desarrollo Web. Realizo proyectos basados en Inteligencia Artificial. Colaboré como autor y editor de contenidos para revistas, colecciones y diversos medios impresos y digitales. Brindo capacitaciones, clases de formación y consultorías sobre lenguajes de programación y herramientas para Desarrollo Web y móvil en modalidad online y presencial.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    *