+1

Varrendo diretórios pelo PHP

criado por Sorcerys em 26/08/2002 11:20pm
Este está sendo meu primeiro artigo, nao liguem se for fraco, mas tenho certeza que irá ajudar muitos que estão começando a trabalhar com estruras de diretórios. Então vamos ao que interessa.

O script é uma função para mais tarde podermos chamá-la a qualquer hora.

Crie uma página chamada varre.php e transcreva o script abaixo:

<?php
function varre($dir,$filtro="",$nivel="")
{
    $diraberto = opendir($dir); // Abre o diretorio especificado
    chdir($dir); // Muda o diretorio atual p/ o especificado
    while($arq = readdir($diraberto)) { // Le o conteudo do arquivo
        if($arq == ".." || $arq == ".")continue; // Desconsidera os diretorios
        $arr_ext = explode(";",$filtro);
        foreach($arr_ext as $ext) {
            $extpos = (strtolower(substr($arq,strlen($arq)-strlen($ext)))) == strtolower($ext);
            if ($extpos == strlen($arq) and is_file($arq)) // Verifica se o arquivo é igual ao filtro
                echo $nivel.$arq."<br>"; // Imprimi em forma de arvore
        }
        if (is_dir($arq)) {
            echo $nivel.$arq."<br>"; // Imprimi em forma de arvore
            varre($arq,$filtro,$nivel."&nbsp;&nbsp;&nbsp;&nbsp;"); // Executa a funcao novamente se subdiretorio
        }
    }
    chdir(".."); // Volta um diretorio
    closedir($diraberto); // Fecha o diretorio atual
}
?>

Os exemplos seguem na próxima página...

Comentários:

Mostrando 1 - 10 de 12 comentários
Rafael Quines disse:
Kra, tava estudando isso essa semana.. Fiz meu "file browser" em php. ae eu clikava nas pastas, e mostrava os arquivos da pasta, ae qnd cliko em algum arquivos, eu chamo um TEXTAREA com o conteudo. .ficou legal...

Mas eu queria listar meus diretorios e arquivos em uma treeview. A treeview eu faço tranquilo, mas me faltava desenvolver a parte de entrar nos ubsdiretorios tudo de uma vez só..

Mto legal

Valeu
03/02/2006 5:35am (~18 anos atrás)

tatiane viana disse:
Oi Sorcerys...

não entendi essa linha " $extpos = (strtolower(substr($arq,strlen($arq)-strlen($ext)))) == strtolower($ext);"

E quando executo:
<?php
include("varre.php");
varre(".",".txt;arquivo");

o php me mostra todos arquivos txts e não os que tem o nome "arquivo".

Poderia me ajudar?

O artigo esta muito legal. Parabens e valeu pelo script.
?>
09/01/2006 11:34am (~18 anos atrás)

Acabei de consertar esse errinho no artigo.

--Joao
31/08/2002 2:20pm (~21 anos atrás)

Sorcerys disse:
Isto mesmo...

Fui erro de programador, esqueci do parenteses...

POr favor arrumem para mim!!

Valeuz
30/08/2002 3:29pm (~21 anos atrás)

Ademir Lima disse:

Nesta linha tem um erro, falta um ")"
-strlen($ext))) ==

Tem que colocar aqui
-strlen($ext))))==
^
---------------|
30/08/2002 3:21pm (~21 anos atrás)

Ademir Lima disse:
Nesta linha tem um erro, falta um ")"
-strlen($ext))) ==

Tem que colocar aqui
-strlen($ext)))<font color=red>)</font> ==
30/08/2002 3:19pm (~21 anos atrás)

Sorcerys disse:
Tudo bem qq coisa estamos ae!

Se precisar de ajuda ou opinioes, estarei aqui...

Antes de postar me mande para eu dar uma olhada...

Valeuz
29/08/2002 12:07pm (~21 anos atrás)

Sorcerys disse:
pelo o que entendi, parece que você esta montando o link errado...

vaí uma sugestao:
utiliza a funcao getcwd(), para pegar o caminho completo que voce ta .

Qq coisa estamos ae!

Se nao for bem isto poste novamente mais claramente....

Valeuz
28/08/2002 12:40pm (~21 anos atrás)

Klaus Reinke disse:
Testei também e funcionou bem. Parabens o artigo está muito bom.
27/08/2002 5:28pm (~21 anos atrás)

Sorcerys disse:
Concordo plenamente...

Podemos manter contato sim..sem nenhun problema...


Valeuz
27/08/2002 3:57pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)