La función glob()
en PHP permite buscar archivos y directorios que coincidan con un patrón específico, utilizando comodines al estilo de los sistemas Unix. Es muy útil para listar archivos que cumplen ciertos criterios en un directorio, como extensiones de archivo o partes de nombres.
glob()
en PHP?
glob()
busca archivos o directorios en el sistema de archivos que coincidan con un patrón de búsqueda. Permite usar comodines como
(cualquier número de caracteres) y ?
(un solo carácter), facilitando la búsqueda de archivos por nombre, extensión, etc.
array glob ( string $pattern [, int $flags = 0 ] )
:
Coincide con cualquier número de caracteres.
?
: Coincide con un único carácter.
abc]:
Coincide con cualquiera de los caracteres dentro de los corchetes.
!abc]:
Coincide con cualquier carácter que no esté dentro de los corchetes.
Flag | Descripción |
---|---|
GLOB_MARK
|
Añade una barra (/ ) al final de cada nombre de directorio.
|
GLOB_NOSORT
|
No ordena los resultados (mejor rendimiento). |
GLOB_NOCHECK
|
Devuelve el patrón sin coincidencias si no se encuentra ningún archivo. |
GLOB_ONLYDIR
|
Devuelve solo directorios que coinciden con el patrón. |
GLOB_BRACE
|
Expande patrones como {a,b} para coincidir con a o b (no en todos los sistemas).
|
Devuelve un array con los nombres de los archivos o directorios que coinciden con el patrón. Si no se encuentran coincidencias, devuelve un array vacío.
glob()
Este ejemplo muestra cómo usar glob()
para encontrar todos los archivos .txt
en el directorio actual:
<?php
$archivos_txt = glob("*.txt");
print_r($archivos_txt);
// Resultado esperado: Array con todos los archivos .txt en el directorio actual
Para buscar archivos en una ruta específica, inclúyela en el patrón. Este ejemplo busca archivos .jpg
en el directorio imagenes
:
<?php
$imagenes_jpg = glob("imagenes/*.jpg");
print_r($imagenes_jpg);
// Resultado esperado: Array con todos los archivos .jpg en el directorio "imagenes"
glob()
Puedes usar múltiples comodines para buscar archivos que cumplan con criterios más específicos. Por ejemplo, el siguiente código busca archivos que comienzan con "archivo_" y terminan en ".log":
<?php
$archivos_log = glob("archivo_*.log");
print_r($archivos_log);
// Resultado: Array con archivos que cumplen el patrón "archivo_*.log"
GLOB_ONLYDIR
Si solo quieres listar directorios y no archivos, puedes usar el flag GLOB_ONLYDIR
:
<?php
$directorios = glob("carpeta/*", GLOB_ONLYDIR);
print_r($directorios);
// Resultado: Array con los nombres de los directorios en "carpeta"
GLOB_BRACE
)
La brace expansion permite especificar varios patrones en una sola búsqueda. Este ejemplo encuentra archivos con extensiones .jpg
o .png
:
<?php
$imagenes = glob("imagenes/*.{jpg,png}", GLOB_BRACE);
print_r($imagenes);
// Resultado: Array con archivos .jpg y .png en el directorio "imagenes"
Nota: La opción GLOB_BRACE
puede no estar disponible en todos los sistemas operativos.
Aquí combinamos varios patrones y flags para obtener una lista de archivos que empiecen con data_
y tengan la extensión .json
en el directorio datos
, incluyendo un slash (/
) al final si es un directorio.
<?php
$archivos_json = glob("datos/data_*.json", GLOB_MARK);
print_r($archivos_json);
// Resultado: Array con archivos y directorios terminados en ".json" en el directorio "datos"
Para más información sobre glob()
en PHP, consulta la documentación oficial de PHP.
Jorge García
Fullstack developer