Expresiones Regulares en PHP: Filtrado de Datos CSV
Clase 23 de 29 • Curso de Expresiones Regulares
Resumen
¿Cómo usar expresiones regulares en PHP?
PHP sigue siendo un lenguaje muy utilizado en la web moderna, y aunque no sea el favorito de todos, su capacidad para manejar expresiones regulares es impresionante y ampliamente funcional. Aprender a utilizar estas funciones en PHP puede hacer que la manipulación de textos sea más precisa y más rápida. Aquí vamos a explorar cómo manejar expresiones regulares con PHP, partiendo de la lectura de un archivo CSV.
¿Cómo leer un archivo en PHP?
Para empezar a trabajar con expresiones regulares en PHP, primero debemos leer un archivo. Supongamos que tenemos un archivo llamado results.csv
.
<?php
$file = fopen('files/results.csv', 'r');
while (!feof($file)) {
$line = fgets($file);
echo $line;
}
fclose($file);
?>
Este código abre el archivo para su lectura y recorre cada línea imprimiéndola en la pantalla. Es un paso esencial antes de aplicar cualquier procesamiento de texto, como el uso de expresiones regulares.
¿Cómo usar preg_match
en PHP?
El siguiente paso es utilizar la función preg_match
de PHP, que permite buscar coincidencias en una cadena de texto utilizando una expresión regular. Esta función devuelve un valor booleano: true
si hay una coincidencia y false
si no la hay.
<?php
$pattern = '/^2018-\d{2}-\d{2}/';
if (preg_match($pattern, $line, $matches)) {
print_r($matches);
}
?>
En este ejemplo, buscamos líneas que comiencen con la fecha en el formato YYYY-MM-DD
del año 2018. La expresión regular ^2018-\d{2}-\d{2}
busca específicamente estas fechas, donde \d
es un dígito y {2}
indica dos dígitos consecutivos.
¿Cómo mejorar la precisión de las expresiones?
Al trabajar con expresiones regulares, a veces es necesario hacerlas más estrictas o más flexibles. Podemos utilizar metacaracteres como .*
que permiten cualquier carácter en cualquier cantidad para ser más inclusivos.
Imagina que quieres buscar todos los juegos de enero de 2018:
<?php
$pattern = '/^2018-01-\d{2},/';
if (preg_match($pattern, $line, $matches)) {
$day = $matches[1]; // Suponiendo que se agrupa el día
echo "Día del partido: $day\n";
}
?>
Este ejemplo busca líneas que comiencen con fechas específicas de enero de 2018 y, si encuentra una coincidencia, imprime el día específico del partido.
¿Qué detalles considerar al diseñar una expresión regular?
- Escapado de caracteres: Asegúrate de escapar los caracteres especiales como los guiones
-
o los puntos.
para que sean interpretados literalmente cuando sea necesario. - Comillas: Es importante saber usar comillas simples para contener expresiones regulares porque evitan la necesidad de escapar ciertos caracteres adicionales.
- Agrupaciones: Utiliza paréntesis para crear grupos en tu expresión regular cuando necesites extraer partes específicas de la cadena de texto.
Evaluación de coincidencias y estadísticas
Al finalizar el procesamiento, podemos evaluar cuántas coincidencias se encontraron y cuántas no:
<?php
$matchCount = 0;
$noMatchCount = 0;
if (preg_match($pattern, $line)) {
$matchCount++;
} else {
$noMatchCount++;
}
printf("Matches: %d\nNo Matches: %d\n", $matchCount, $noMatchCount);
?>
Este tipo de evaluación es crucial para entender la eficacia de nuestras expresiones.
Conclusion
PHP ofrece herramientas poderosas para trabajar con expresiones regulares, permitiendo una búsqueda y manipulación de texto muy detallada y específica. Con práctica y atención a los detalles, puedes dominar la creación de expresiones regulares eficaces y eficientes. ¡Anímate a experimentar y fortalecer tus habilidades en este lenguaje y observa cómo tus proyectos ganan en robustez y funcionalidad!