Boteco Digital

Listando arquivos de um diretório em PHP

Mostrei no meu último artigo como criar uma galeria de fotos utilizando JQuery e o plugin PrettyPhoto, mas ele tinha um problema, ou melhor uma dificuldade, para adicionar uma nova foto tínhamos que abrir o arquivo e acrescentar o código HTML para a nova foto. Para não termos esse tipo e trabalho que inventaram a informática 🙂 .

Vamos ver então um simples script que lê um determinado diretório e monta a tag HTML para a imagem:

$dir = "fotos";
$d = opendir($dir);
$i = 0;

$nome = readdir($d);
while( $nome != false ){
	if( !is_dir($nome) and ($nome != 'Thumbs.db') ){
		$arquivos[$i] = $nome;
                $i++;
	}
	$nome = readdir($d);
}
sort($arquivos);

foreach($arquivos as $arq){
	echo '<img src="',$dir, " alt="" /> ';
}

Na linha 1 definimos o diretório que será lido e armazenamos em uma variável para facilitar a manutenção do código, na linha 2 abrimos um manipulador de diretório com a função opendir() que nos retorna um ponteiro para ser utilizado em funções posteriores.

Bom agora podemos percorrer o diretório, mas antes vamos iniciar um contador (linha 3) para podermos armazenar em um array os nomes dos arquivos para poder entre outras coisas ordená-los.

Na linha 5 começamos a ler os arquivos e fazemos isso utilizando a função readdir() que retorna o nome do próximo arquivo do diretório aberto com a função opendir. Na linha 6 entramos em um laço que executa enquanto o nome do arquivo retornado pela função readdir() não for falso, ou seja não tenha listado todos os arquivos do diretório.

Dentro do laço (linha 7) fazemos um teste, se o nome retornado não for um diretório ( com a função is_dir()) e se o nome for diferente de “Thumbs.db”, aqueles arquivos chatos e miniaturas do windows que as vezes upamos sem querer 🙁

Na linha 8 armazenamos o nome do arquivo no array e na linha 9 incrementamos nosso contador. fora do if lemos o próximo arquivo do diretório para o teste do while.

Na linha 13 utilizamos a função sort() para ordenar nosso array onde estão armazenados os nomes das imagens. Isto é muito útil principalmente se os nomes dos arquivos sejam seqüênciais e correspondem também a uma miniatura em outro diretório como é o mais indicado caso queiram utilizar esse script para criar uma galeria com o PrettyPhoto.

Agora basta juntar os nomes do arquivos do array com as tags para exibir as fotos como é feito na linha 16, utilizando um foreach para percorrer array.

Este script facilita bastante a vida principalmente se s galerias criadas forem grandes ou precisar adicionar fotos frequentemente, espero que tenham gostado quem quiser baixar o exemplo clique aqui.

Categorias PHP Web
comments powered by Disqus