En el último episodio, construimos un probador de expresiones regulares básico usando PHP. Hace lo que necesitamos, pero es realmente limitado y no se ve tan bien. En este episodio, lo vamos a Larafy. Vamos a reconstruir el probador de expresiones regulares usando Laravel. Esta debería ser una buena prueba para hackear algo rápido y sucio usando PHP nativo en lugar de construirlo en un marco como Laravel. Los dos enfoques son realmente diferentes y este pequeño ejercicio nos dará una buena idea de cómo cambiar nuestra forma de pensar. Vamos a ver.


Laravel 4.2

Para este ejemplo, usaremos Laravel 4.2. Aunque todos estamos ansiosos por Laravel 5 y todas las nuevas características geniales que tiene, sigue siendo un objetivo en movimiento a medida que cambian las cosas, así que nos quedaremos con Laravel 4.2 por ahora. Vamos a imitar lo que hicimos en la primera iteración de este proyecto sin un marco. Esta es la primera iteración con Laravel, y estoy adoptando el enfoque de simplemente, hacer que algo funcione y luego preocuparme por refactorizar más tarde. Entonces eso es lo que haremos.

rutas.php

master.blade.php

regex.blade.php

Estos tres archivos componen la aplicación. Probémoslo.

Visitando la aplicación por primera vez

En primer lugar, solo queremos asegurarnos de que cuando visitemos el probador de expresiones regulares, se cargue correctamente y no obtengamos errores aleatorios o mensajes que no deberían estar allí. Visitamos http://localhost/laravel/public/y todo se ve bien.
probador de expresiones regulares laravel

Envío de una prueba de expresiones regulares sin patrón

Probamos la validación enviando una prueba sin completar el patrón de expresiones regulares. Vemos que la validación funciona muy bien, ya que recibimos el mensaje de error que se muestra aquí.
validación laravel regex

Envío de una prueba de expresiones regulares sin asunto

Probar el formulario sin incluir un tema muestra que la validación también funciona aquí.
validación dos de laravel regex

Ejemplo de coincidencias de expresiones regulares exitosas

Ahora que vemos cómo está funcionando la validación básica, probemos algunas coincidencias de expresiones regulares con un sujeto y un patrón válidos. Podemos ver que al enviar nuestra prueba, obtenemos un bonito mensaje flash con el número de coincidencias de cada una en una nueva línea. En este caso, emparejamos 'Laravel' y encontramos dos coincidencias. ¡Frio!
expresión regular de laravel coincidencia exitosa

¿Qué sucede cuando no hay coincidencias?

Necesitamos tener en cuenta cuando no hay coincidencias para nuestra prueba de expresión regular. Esto está integrado y podemos probarlo ahora. Lo bueno es que podemos dejar nuestra cadena de prueba en su lugar en el área de texto del tema, ya que tenemos la aplicación configurada para volver a llenar el formulario en cada iteración. Nuestra cadena actual de 'Este es un texto de ejemplo sobre Laravel y ahora emparejaremos Laravel con una expresión regular'. no tiene números, así que intentemos hacer coincidir un número con una expresión regular para ver cómo la aplicación maneja esto. Podemos ver que al intentar hacer coincidir un dígito, aparece un mensaje de error agradable como ese.
expresiones regulares de laravel sin coincidencias

Captura de excepciones en nuestra aplicación Little Laravel

Habrá casos en los que proporcionemos un patrón a la aplicación que la función preg_match_all bajo el capó no entiende. En esos casos, queremos capturar la excepción que se lanza y mostrarla de una manera agradable. De lo contrario, obtendremos los desagradables fallos habituales que vemos cuando PHP falla en un script. Debido a la secuencia de prueba de captura que incluimos en la lógica, esto también funciona bastante bien. En este ejemplo podemos ver un mensaje de preg_match_all (): Modificador desconocido 'd'.
excepciones de captura de expresiones regulares

Conclusión

Esta fue una pequeña prueba divertida de hackear un probador de expresiones regulares rápido y sucio en Laravel. Hicimos uso de rutas básicas, plantillas de Laravel Blade, validación de Laravel y un buen PHP nativo antiguo para lograr nuestro objetivo. Gracias por echarle un vistazo.