Las expresiones regulares permiten que nuestro desarrollo pueda realizar búsquedas y/o sustituciones, de mayor o menor dificultad, dentro de una cadena de texto.
Un ejemplo típico sobre expresiones regulares es cuando se quiere saber si un texto referido a un email contiene el carácter @ y el carácter ‘.’ o si queremos cambiar el formato de fecha que está en modelo inglés al español.
Función preg_match ( ) de PHP
Esta función devuelve verdadero el patrón que se busca está en la cadena de texto. Estos argumentos habrá que indicarlos junto a la función preg_match ( ) que sigue la siguiente sintaxis.
$existe = preg_match ($patron, $cadena) ;
- $existe : de tipo booleano.
- $patron : cadena de caracteres que corresponde a la expresión regular o patrón que se pretende buscar.
- $cadena : cadena de caracteres que soporta la búsqueda del patrón o expresión regular.
Su uso es bien sencillo, observe este ejemplo:
<?php $patron = "/ALTRUISTAS/"; $cadena = "El nombre de esta web es 'Altruistas Org', pero esta mal escrito si se escribe 'altruistas org'"; if (preg_match ($patron, $cadena){ echo "el patron: '$patron' SI está en la cadena: '$cadena'"; else { echo "el patron: '$patron' NO está en la cadena: '$cadena'"; } ?>
Se debe tener en cuenta que salvo que se indique adecuadamente, evitar ser sensible los caracteres en mayúsculas y minúsculas, la búsqueda del ejemplo anterior no encuentra el literal ALTRUISTAS en la cadena.
Función preg_replace ( ) de PHP
Esta función permite sustituir un contenido por otro que se indica como argumento. Devuelve la cadena completa con la transformación hecha.
$cadena_nueva = preg_replace ($patron, $cadena_para_sustituir, $cadena_original)
Veamos este ejemplo que se trata de transformar una fecha en formato DD/MM/AAAA en una fecha en formato AAAA-MM-DD
<?php <?php $patron = '#^([0-9]{2})/([0-9]{2})/([0-9]{4})$#'; $cadena_original = '03/06/2020'; $cadena_para_sustituir = '$3-$2-$1'; $texto_despues = preg_replace ($patron, $cadena_para_sustituir, $cadena_original); echo "$cadena_original => $texto_despues"; ?>
En este código se da el formato deseado a la transformación en base a unas referencias que son capturadas con la expresión regular de la variable $patron. Cada apertura y cierre de paréntesis conforma una captura y son numeradas de izquierda a derecha.
- $1 => ([0-9]{2}) = 03
- $2 => ([0-9]{2}) = 06
- $3 => ([0-9]{4}) = 2020
En la variable $cadena_para_sustituir se termina de de dar la forma deseada de salida y representada por la variable $texto_despues que recibe lo que devuelve la función. Como se habrá percatado se consigue alterando el orden de captura y expresando en la cadena ‘$3-$2-$1’.
El resultado de la búsqueda, que en esta ocasión es igual a la cadena completa, se sustituye por la cadena ‘$3-$2-$1’ y queda como resultado 2020-06-03.