PHP Altruisas Ocio Eventos Cursos Las Palmas
/

Dos funciones de PHP aliadas a las expresiones regulares: preg_match y preg_replace

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'";
      }
?>

Ejecutar el código

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";
?>

Ejecutar el código

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.

Deja una respuesta