PHP preg_match(): Expresiones regulares (Regex)
ยฟQuรฉ es la expresiรณn regular en PHP?
Expresiรณn regular PHP Tambiรฉn conocidas como expresiones regulares, son potentes algoritmos de coincidencia de patrones que se pueden realizar en una sola expresiรณn. Las expresiones regulares utilizan operadores aritmรฉticos como (+,-,^) para crear expresiones complejas. Pueden ayudarle a realizar tareas como validar direcciones de correo electrรณnico, direcciones IP, etc.
ยฟPor quรฉ utilizar expresiones regulares?
- Las expresiones regulares de PHP simplifican la identificaciรณn de patrones en datos de cadenas llamando a una sola funciรณn. Esto nos ahorra tiempo de codificaciรณn.
- Al validar la entrada del usuario, como direcciones de correo electrรณnico, nombres de dominio, nรบmeros de telรฉfono, direcciones IP,
- Destacar palabras clave en los resultados de bรบsqueda
- Al crear una plantilla HTML personalizada. Regex en PHP se puede utilizar para identificar las etiquetas de la plantilla y reemplazarlas con datos reales.
Funciones de expresiรณn regular integradas en PHP
PHP tiene funciones integradas que nos permiten trabajar con funciones regulares que aprenderemos en este tutorial de Expresiones regulares de PHP. Veamos las funciones de expresiรณn regular mรกs utilizadas en PHP.
- preg_match() en PHP: esta funciรณn se utiliza para realizar coincidencias de patrones en PHP en una cadena. Devuelve verdadero si se encuentra una coincidencia y falso si no se encuentra ninguna coincidencia.
- preg_split() en PHP: esta funciรณn se utiliza para realizar una coincidencia de patrรณn en una cadena y luego dividir los resultados en una matriz numรฉrica
- preg_replace() en PHP: esta funciรณn se utiliza para realizar una coincidencia de patrรณn en una cadena y luego reemplazar la coincidencia con el texto especificado.
A continuaciรณn se muestra la sintaxis de una funciรณn de expresiรณn regular como PHP preg_match(), PHP preg_split() o PHP preg_replace().
<?php
function_name('/pattern/',subject);
?>
AQUร,
- โnombre_funciรณn(โฆ)โ es PHP preg_match(), PHP preg_split() o PHP preg_replace().
- โ/โฆ/โ Las barras diagonales indican el principio y el final de nuestra funciรณn de prueba de expresiones regulares PHP
- โ'/pattern/'โ es el patrรณn que necesitamos hacer coincidir
- โasuntoโ es la cadena de texto con la que se compararรก
Veamos ahora ejemplos prรกcticos que implementan las funciones de expresiones regulares de PHP anteriores.
Preg_match() en PHP
El primer ejemplo utiliza la funciรณn preg_match() de PHP para realizar una coincidencia de patrรณn simple para la palabra guru en un texto dado. URL.
El siguiente cรณdigo muestra la implementaciรณn de la funciรณn de prueba preg_match() para el ejemplo anterior.
<?php
$my_url = "www.guru99.com";
if (preg_match("/guru/", $my_url))
{
echo "the url $my_url contains guru";
}
else
{
echo "the url $my_url does not contain guru";
}
?>
Navega hasta el URL http://localhost/phptuts/preg_match_simple.php
Examinemos la parte del cรณdigo responsable de nuestra salida "preg_match('/gurรบ/', $mi_url)โ AQUร,
- โpreg_match(โฆ)โ es la funciรณn de expresiรณn regular de PHP
- โ'/guru/'โ es el patrรณn de expresiรณn regular que debe coincidir
- โ$my_urlโ es la variable que contiene el texto que se va a comparar.
El diagrama a continuaciรณn resume los puntos anteriores.
PHP Preg_split()
Veamos ahora otro ejemplo que usa preg_split() en la funciรณn PHP.
Tomaremos una frase de cadena y la dividiremos en una matriz; el patrรณn a combinar es un solo espacio.
La cadena de texto que se utilizarรก en este ejemplo es "Me encantan las expresiones regulares".
El siguiente cรณdigo ilustra la implementaciรณn del ejemplo anterior.
<?php
$my_text="I Love Regular Expressions";
$my_array = preg_split("/ /", $my_text);
print_r($my_array );
?>
Navega hasta el URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Veamos ahora preg_replace() en Funciรณn PHP que realiza una coincidencia de patrรณn y luego reemplaza el patrรณn con otra cosa.
El siguiente cรณdigo busca la palabra gurรบ en un cadena.
Reemplaza la palabra gurรบ con la palabra gurรบ rodeada de cรณdigo CSS que resalta el color de fondo.
<?php
$text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com";
$text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text);
echo $text;
?>
Suponiendo que haya guardado el archivo preg_replace.php, vaya al navegador. URL http://localhost/phptuts/preg_replace.php
Metacaracteres de expresiรณn regular
Los ejemplos anteriores utilizan patrones muy bรกsicos; los metacaracteres simplemente nos permiten realizar comparaciones de patrones mรกs complejas, como probar la validez de una direcciรณn de correo electrรณnico. Veamos ahora los metacaracteres que se utilizan comรบnmente.
| Metacarรกcter | Mareas Ideales para Lecciones | Ejemplo |
|---|---|---|
| . | Coincide con cualquier carรกcter excepto una nueva lรญnea | /./ coincide con cualquier cosa que tenga un solo carรกcter |
| ^ | Coincide con el comienzo de una cadena/excluye caracteres | /^PH/ coincide con cualquier cadena que comience con PH |
| $ | Coincide con el patrรณn al final de la cuerda. | /com$/ coincide con guru99.com,yahoo.com, etc. |
| * | Coincide con cero (0) o mรกs caracteres | /com*/ coincide con computadora, comunicaciรณn, etc. |
| + | Requiere que los caracteres anteriores aparezcan al menos una vez | /yah+oo/ coincide con yahoo |
| \ | Se utiliza para escapar de metacaracteres. | /yahoo+\.com/ trata el punto como un valor literal |
| [...] | Clase de personaje | /[abc]/ coincide con abc |
| Arizona | Coincide con letras minรบsculas | /a-z/ coincide con genial, feliz, etc. |
| A-Z | Coincide con letras mayรบsculas | /A-Z/ coincide con QUร, CรMO, POR QUร, etc. |
| 0-9 | Coincide con cualquier nรบmero entre 0 y 9 | /0-4/ coincide con 0,1,2,3,4 |
La lista anterior solo proporciona los metacaracteres mรกs utilizados en expresiones regulares.
Veamos ahora un ejemplo bastante complejo que comprueba la validez de una direcciรณn de correo electrรณnico.
<?php
$my_email = "name@company.com";
if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) {
echo "$my_email is a valid email address";
}
else
{
echo "$my_email is NOT a valid email address";
}
?>
Explicando el patrรณn โ[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] "
AQUร,
- โ'/โฆ/'โ comienza y finaliza la expresiรณn regular
- โ^[a-zA-Z0-9._-]โ coincide con cualquier letra mayรบscula o minรบscula, nรบmeros entre 0 y 9 y puntos, guiones bajos o rayas.
- โ+@[a-zA-Z0-9-]โ coincide con el sรญmbolo @ seguido de letras mayรบsculas o minรบsculas, nรบmeros entre 0 y 9 o guiones.
- โ+\.[a-zA-Z.]{2,5}$/โ escapa del punto usando la barra invertida y luego coincide con cualquier letra minรบscula o mayรบscula con una longitud de caracteres entre 2 y 5 al final de la cadena.
Navega hasta el URL http://localhost/phptuts/preg_match.php
Como puede ver en el desglose del ejemplo anterior, los metacaracteres son muy poderosos cuando se trata de hacer coincidir patrones.
Resumen
- Una expresiรณn regular o Regex en PHP es un algoritmo de coincidencia de patrones
- Las expresiones regulares son muy รบtiles al realizar comprobaciones de validaciรณn, crear sistemas de plantillas HTML que reconozcan etiquetas, etc.
- PHP tiene funciones integradas, a saber, PHP preg_match(), PHP preg_split() y PHP preg_replace() que admiten expresiones regulares.
- Los metacaracteres nos permiten crear patrones complejos




![[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]](https://www.guru99.com/images/2013/04/validate_email.png)