Include dotfiles excluding . and .. special dirs with .[!.]*
<?php
$all_files = array_merge(glob('.[!.]*'), glob('*'));
// or
$all_files = glob('{.[!.],}*', GLOB_BRACE);
?>
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
glob — Búsqueda de rutas que coinciden con un patrón
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.
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_*
.
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.
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
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).