Dev (Back & Front)ARTIGO

Funções para Leitura de Diretórios

Vou disponibilizar aqui alguns scripts para leitura de diretórios, sub-diretórios, arquivos e algumas variantes que vejo que são bastante usadas.

Claro que há outras formas de fazer isso usando outras funções, mas creio que essas sejam as mais adequadas. Outras funções de referência:

Scandir – Para PHP

Class.dir – PHP3, PHP4 ou PHP5

Neste artigo você vai encontrar como:

  • Abrir um diretório e mostrar os arquivos e sub-diretórios.
  • Abrir um diretório e mostrar somente os sub-diretórios.
  • Abrir um diretório e mostrar somente os sub-diretórios (sem o diretório “.”).
  • Abrir um diretório e mostrar somente os sub-diretórios (sem o diretório “..”).
  • Abrir um diretório e mostrar somente os sub-diretórios (sem os diretórios “.” e “..”).
  • Abrir um diretório e mostrar os arquivos.
  • Abrir um diretório e mostrar os arquivos com extensão “.jpg”.
  • Abrir um diretório e mostrar os arquivos em ordem alfabética.
  • Abrir um diretório e mostrar os arquivos e sub-diretórios (sem os diretórios “.” e “..”) em ordem alfabética.
  • Abrir um diretório e mostrar os arquivos e sub-diretórios (sem os diretórios “.” e “..”) em ordem alfabética e mostrar todos os arquivos e sub-diretórios dentro de cada sub-diretório, ou seja, mostrar toda a árvore.

Para testar os exemplos, use a chamada abaixo (caso esteja usando Windows e o diretório exista, claro!) no mesmo arquivo que está a função.

<?php
    function diretorios($diretorio) {
        //código da função
    }
    diretorios("c:\php\");
?>
Para testar o último exemplo, use:
<?php
    function diretorios($diretorio) {
        //código da função
    }
    mostra(diretorios("c:\php\"));
?>

Abrir um diretório e mostrar os arquivos e sub-diretórios.

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                 echo $arq . "<br />";
            }
        }
    }
}
?>

Abrir um diretório e mostrar somente os sub-diretórios.

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_dir($diretorio . $arq)) {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar somente os sub-diretórios (sem o diretório “.”).

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_dir($diretorio . $arq) && $arq != ".") {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar somente os sub-diretórios (sem o diretório “..”).

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_dir($diretorio . $arq) && $arq != "..") {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar somente os sub-diretórios (sem os diretórios “.” e “..”).

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_dir($diretorio . $arq) && $arq != "." && $arq != "..") {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar os arquivos.

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_file($diretorio . $arq)) {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar os arquivos com extensão “.jpg”.

<?php
function diretorios($diretorio) {
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_file($diretorio . $arq) && pathinfo($arq, 4) == "jpg") {
                     echo $arq . "<br />";
                }
            }
        }
    }
}
?>

Abrir um diretório e mostrar os arquivos em ordem alfabética.

<?php
function diretorios($diretorio) {
    $resultado = array();
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                if (is_file($diretorio . $arq)) {
                     $resultado[strtolower($arq)] = $arq;
                }
            }
            ksort($resultado);
            foreach($resultado as $valor) {
                echo $valor . "<br />";
            }
        }
    }
}
?>

Abrir um diretório e mostrar os arquivos e sub-diretórios (sem os diretórios “.” e “..”) em ordem alfabética.

<?php
function diretorios($diretorio) {
    $resultado['d'] = $resultado['a'] = array();
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                 if ($arq != '.' && $arq != '..') {
                    if (is_dir($diretorio . $arq)) {
                         $resultado['d'][strtolower($arq)] = $arq;
                    } else {
                        $resultado['a'][strtolower($arq)] = $arq;
                    }
                }
            }
            ksort($resultado['d']);
            ksort($resultado['a']);
            foreach($resultado['d'] as $valor) {
                echo $valor . "<br />";
            }
            foreach($resultado['a'] as $valor) {
                echo $valor . "<br />";
            }
        }
    }
}
?>

Abrir um diretório e mostrar os arquivos e sub-diretórios (sem os diretórios “.” e “..”) em ordem alfabética e mostrar todos os arquivos e sub-diretórios dentro de cada sub-diretório, ou seja, mostrar toda a árvore.

<?php
function diretorios($diretorio) {
    $resultado['d'] = $resultado['a'] = array();
    if (is_dir($diretorio)) {
        if ($dir = opendir($diretorio)) {
            while(false !== ($arq = readdir($dir))) {
                 if ($arq != '.' && $arq != '..') {
                    if (is_dir($diretorio . $arq)) {
                        $resultado['d'][strtolower($arq)] = diretorios($diretorio . $arq . DIRECTORY_SEPARATOR);
                    } else {
                        $resultado['a'][strtolower($arq)] = $arq;
                    }
                }
            }
        }
    }
    ksort($resultado['d']);
    ksort($resultado['a']);
    return $resultado;
}
function mostra($array) {
    foreach($array['d'] as $chave => $valor) {
        echo $chave . "<br />";
         if (is_array($valor)) {
              mostra($valor);
         }
    }
    foreach($array['a'] as $chave => $valor) {
         echo $chave . "<br />";
    }
}
?>

Agora aguardo os comentários para que possa melhorar cada vez mais a qualidade dos artigos.

Espero que estejam gostando. Abraços

mais conhecido como tmferreira (tmferreira@bol.com.br) e é formado em Análise de Sistemas pela Universidade Salgado de Oliveira. Trabalha desde 2005 com desenvolvimento WEB, na FatorClick (http://www.fatorclick.com.br). Também mantém um blog (http://www.tmferreira.com.br/blog/) sobre desenvolvimento WEB, onde escreve sobre PHP, Javascript, Banco de Dados e Webstandards.

Ver perfil