Função para listar arquivos de um diretório

No post de hoje vou compartilhar com todos que visitam o blog uma função php que criei para me auxiliar a recuperar e listar os arquivos de um determinado diretório em uma aplicação.

Imagine que dentro da pasta do seu projeto exista o diretório “imagens” e que você deseja recuperar o nome de todos os arquivos contidos nele.

Pois bem. Essa função será bastante útil.

Como a função pode aplicar um filtro para recuperar apenas arquivos de determinadas extensões, segue também uma função que verifica a extensao de um determinado arquivo. (OBS: Essa segunda função é executada dentro da primeira, portanto é necessário a implementação da mesma).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/**
    * Retorna os nomes dos arquivos de um diretório
    * @author Rafael Wendel Pinheiro
    * @param String $dir Caminho do diretório a ser utilizado
    * @return array
*/
function get_files_dir($dir, $tipos = null){
      if(file_exists($dir)){
          $dh =  opendir($dir);
          while (false !== ($filename = readdir($dh))) {
              if($filename != '.' && $filename != '..'){
                  if(is_array($tipos)){
                      $extensao = get_extensao_file($filename);
                      if(in_array($extensao, $tipos)){
                          $files[] = $filename;
                      }
                  }
                  else{
                      $files[] = $filename;
                  }
              }
          }
          if(is_array($files)){
              sort($files);
          }
          return $files;
      }
      else{
          return false;
      }
}
 
/**
    * Retorna a extensão de um arquivo
    * @author Rafael Wendel Pinheiro
    * @param String $nome Nome do arquivo a se capturar a extensão
    * @return resource Caminho onde foi salvo o arquivo, ou false em caso de erro
*/
function get_extensao_file($nome){
    $verifica = explode('.', $nome);
    return $verifica[count($verifica) - 1];
}
?>

A função get_files_dir recebe como parâmetro o caminho do diretório a ser “explorado” e um array(não obrigatório) com a extensão ou extensões que desejamos filtrar. O valor de retorno é um array com o nome(eu disse nome e não caminho) de todos os arquivos localizados.

Vamos a um exemplo:

1
2
3
4
5
6
7
8
9
<?php
$nomes = get_files_dir('arquivos');
 
if(is_array($nomes)){
    foreach ($nomes as $nome){
          echo $nome . "<br />";    
    }
}
?>

No exemplo acima eu capturo o nome de todos os arquivos do diretorio arquivos e os imprimo na tela. Agora imaginemos que queira pegar apenas as imagens jpg e png desse mesmo diretório.

1
2
3
4
5
6
7
8
9
10
<?php
$extensoes = array('jpg', 'png');
$nomes = get_files_dir('arquivos', $extensoes);
 
if(is_array($nomes)){
    foreach ($nomes as $nome){
         echo $nome . "<br />";
    }
}
?>

E pronto! Foi retornado apenas os arquivos que satisfazem as extensões.

Espero ter ajudado

Abs.

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *