A função glob() retorna uma lista de de nomes de arquivos ou diretórios de acordo com padrão de busca que colocarmos, por exemplo, se executarmos glob(“*”) serão listados todos os arquivos de uma pasta; mas se digitarmos glob(“*.txt”) serão listados todos os arquivos terminados em .txt
A função glob() retorna um array.
Além dos padrões “.txt” e “*” podemos usar vários outros.
O glob(‘*’) ignora arquivos ocultos por padrão. Em linux arquivos ocultos são arquivos que tem um ponto no início de seus nomes, exemplo: .arquivoOculto é um arquivo oculto em sistemas linux.
Isso significa que glob(‘*’) não exibirá esses arquivos ocultos.
Sintaxe e Parâmetros da função glob()
glob(padrao, parametros)
- padrao: Requerido. Especifica o padrão a ser pesquisado
- parametro: podemos ter como parâmetros:
- GLOB_ONLYDIR Retorna apenas diretórios que correspondem ao padrão
- GLOB_MARK Adiciona uma barra a cada item retornado
- GLOB_NOSORT Retornar arquivos conforme aparecem no diretório (não ordenados)
- GLOB_NOCHECK Retorna o padrão de pesquisa se nenhuma correspondência for encontrada
- GLOB_NOESCAPE Barras invertidas não escapam(tiram o sentido) de metacaracteres.
- GLOB_BRACE Expande {a,b,c} para corresponder a ‘a’, ‘b’ ou ‘c’
- GLOB_ERR Pare ao ocorrer erros. adicionado no PHP 5.1
Ambiente de Trabalho
Iremos trabalhar com os seguintes arquivos e pastas
. +-- documentos | +-- doc.txt | +-- lista.txt | +-- pagamentos.txt | +-- segredos.doc +-- imagens | +-- anversario.jpg | +-- festa.jpg +-- index.php
Exemplos da Função glob()
#1 exibindo o conteúdo da pasta raiz
<?php print_r(glob("*")); ?>
Resultado:
Array ( [0] => documentos [1] => imagens [2] => index.php )
#2 exibindo o conteúdo usando foreach
<?php foreach(glob("*") as $arquivos) echo $arquivos . "<br>"; ?>
Resultado:
<?php foreach(glob("documentos/*") as $arquivos) echo $arquivos . "<br>"; ?>
documentos
imagens
index.php
#3 exibindo todos os arquivos da pasta documentos
Resultado
documentos/doc.txt
documentos/lista.txt
documentos/pagamentos.txt
documentos/segredos.doc
#4 exibindo todos os arquivos terminados em .doc
<?php foreach(glob("documentos/*.doc") as $arquivos) echo $arquivos . "<br>"; ?>
Resultado
documentos/segredos.doc
#5 Exibindo todos os arquivos e pastas
<?php foreach(glob("*/*") as $arquivos) echo $arquivos . "<br>"; ?>
Resultado
documentos/doc.txt
documentos/lista.txt
documentos/pagamentos.txt
documentos/segredos.doc
imagens/anversario.jpg
imagens/festa.jpg
#6 exibindo o tamanho dos arquivos com array_map();
<?php $array = array_map('filesize', glob("*")); foreach ($array as $x) echo $x . "<br>"; ?>
Resultado:
4096
4096
102
#7 exibindo a soma do tamanho dos arquivos
<?php echo array_sum( array_map('filesize', glob("*"))); ?>
Resultado:
8256
Usando Parâmetros
#1 adicionando uma barra(/) para cada item encontrado
<?php foreach(glob("*",GLOB_MARK) as $arquivos) echo $arquivos; ?>
Resultado
documentos/imagens/index.php
#2 exibindo apenas diretórios(pastas)
<?php foreach(glob("*",GLOB_ONLYDIR) as $arquivos) echo $arquivos . "<br>"; ?>
Resultado
documentos
imagens
Construindo os Padrões dentro da Função glob()
Para construir um padrão, você usa os seguintes caracteres especiais:
- * para corresponder a zero ou mais caracteres
- – para corresponder exatamente a um caractere
- [ ] para corresponder a um caractere de um grupo de caracteres listados no []. Para negar a correspondência, você usa o ! como o primeiro personagem do grupo.
- \ para escapar dos seguintes caracteres, exceto quando o sinalizador GLOB_NOESCAPE estiver definido.
Como Listar Arquivos Ocultos do Linux Usando glob()?
Conforme dito acima: O glob(‘*’) ignora arquivos ocultos por padrão. Em linux arquivos ocultos são arquivos que tem um ponto no início de seus nomes, exemplo: .arquivoOculto é um arquivo oculto em sistemas linux.
Se você quiser exibir os arquivos ocultos pode usar o {.[!.],}* como padrão com a flag GLOB_BRACE:
<?php $filenames = glob('{.[!.],}*', GLOB_BRACE); foreach ($filenames as $filename) { echo $filename . '<br>'; } ?>
Comment on “PHP: Usando glob( ) para listar Pastas e Arquivos”