glob

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

globBúsqueda de rutas que coinciden con un patrón

Descripción

glob(string $pattern, int $flags = 0): array|false

glob() busca todas las rutas que coinciden con el patrón pattern, siguiendo las reglas utilizadas por la función glob() de la libc, que son las mismas que las utilizadas por el Shell en general.

El comportamiento en sistemas Unix y macOS está determinado por la implementación de glob() del sistema. En Windows, se utiliza una implementación conforme a la definición POSIX 1003.2 de glob(), con una extensión para manejar la convención [!...] que permite negar un rango.

Parámetros

pattern

El patrón. No se realiza sustitución de tilde (~) ni de parámetro.

Caracteres especiales:

  • * - Asocia cero o más caracteres.
  • ? - Asocia exactamente un carácter (cualquier carácter).
  • [...] - Asocia un carácter de un conjunto de caracteres. Si el primer carácter es !, asocia cualquier carácter que no esté en este conjunto.
  • {a,b,c} - Asocia una cadena de un grupo de cadenas separadas por comas cuando se utiliza el flag GLOB_BRACE.
  • \ - Escapa el carácter siguiente, excepto cuando se utiliza el flag GLOB_NOESCAPE.

flags

Cualquiera de las constantes GLOB_*.

Valores devueltos

Devuelve un array que contiene los ficheros y directorios que coinciden con el patrón, un array vacío si no hay coincidencias, o false si ocurre un error. A menos que se utilice GLOB_NOSORT, los nombres serán ordenados alfabéticamente.

Ejemplos

Ejemplo #1 Un método práctico para reemplazar opendir() por glob()

<?php
foreach (glob("*.txt") as $filename) {
echo
"$filename ocupa " . filesize($filename) . "\n";
}
?>

El resultado del ejemplo sería algo similar a:

funclist.txt ocupa 44686
funcsummary.txt ocupa 267625
quickref.txt ocupa 137820

Ejemplo #2 Ejemplo con un patrón más complejo

<?php
foreach (glob("path/*/*.{txt,md}", \GLOB_BRACE) as $filename) {
echo
"$filename\n";
}
?>

El resultado del ejemplo sería algo similar a:

path/docs/mailinglist-rules.md
path/docs/README.md
path/docs/release-process.md
path/pear/install-pear.txt
path/Zend/README.md

Notas

Nota: Esta función no funcionará en ficheros remotos ya que el fichero debe ser accesible vía el sistema de ficheros del servidor para poder ser examinado.

Nota: Esta función no está disponible en algunos sistemas (por ejemplo, viejos Sun OS).

Ver también

  • opendir() - Abre un directorio y recupera un puntero sobre él
  • readdir() - Lee una entrada del directorio
  • closedir() - Cierra el puntero al directorio
  • fnmatch() - Prueba un nombre de fichero mediante un patrón de búsqueda

add a note

User Contributed Notes 1 note

up
6
Anonymous
4 years ago
Include dotfiles excluding . and .. special dirs with .[!.]*

<?php
$all_files
= array_merge(glob('.[!.]*'), glob('*'));
// or
$all_files = glob('{.[!.],}*', GLOB_BRACE);
?>
To Top