lebyrus

Listado recursivo de ficheros de un directorio en PHP

A raíz de un off-topic en ASNativos, en el que pedían ayuda para generar automáticamente un listado de ficheros en XML para una galería de imágenes en Flash, he envíado la solución, en PHP, que llevo usando desde hace tiempo.

En mi caso, el directorio que leo es img, y sólo los ficheros con extensión .jpg.

1: <?php
2:
3: chdir
(img);
4:
$basedir = “.”;
5:
6: function
listdir($basedir){
7: if (
$handle = @opendir($basedir)) {
8:
$dirs = array();
9:
$files = array();
10: while (
false !== ($dir = readdir($handle))){
11: if (
$dir != ‘.’ && $dir != ‘..’){
12: if (
is_dir($basedir.“/”.$dir)){
13:
$dirs[] =$dir;
14: } else {
15:
$tmpsplit = split(“[.]”,$dir);
16:
$tmpextension = $tmpsplit[count($tmpsplit)-1];
17: if(
strtolower($tmpextension)==“jpg”) $files[] = $dir; // sólo se listan los jpg
18:
}
19: }
20: }
21:
sort($dirs);
22: for(
$i=0;$i<count($dirs);$i++) {
23: echo
“<dir id=”$i” nombre=”".$dirs[$i].“”>\r”;
24:
listdir($basedir.“/”.$dirs[$i]);
25: echo
“</dir>\r”;
26: }
27:
sort($files);
28: for(
$i=0;$i<count($files);$i++) {
29: echo
“<file id=”$i” nombre=”".$files[$i].“” />\r”;
30: }
31:
closedir($handle);
32: }
33: }
34:
35: echo
“<”.“?xml version=”1.0″ encoding=”utf-8″ ?”.“>\r”;
36: echo
“<dirs>\r”;
37:
listdir($basedir);
38: echo
“</dirs>\r”;
39:
40:
?>

Por cierto, que he aprovechado para incluir una función php para colorear el código y añadir números de línea encontrada en Zend, aunque Serendipity no me deja añadir PHP en las entradas, con lo que he tenido que ponerlo a pelo.

Actualización: puedes descargar el código fuente en lista-directorio.php.txt (tras esta recomendación en los comentarios).

3 comentarios

04/10/2004

Comentarios

#1 - ala_747

Está buena la función. Justo estaba necesitando algo parecido pero hasta ahora no encontré una que me convenza, la probaré a ver que tal me funka con las modificaciones del caso.

Una sugerencia, cuando pongas código PHP como aquí, pon un link a un TXT con el código, o no incluyas los números de línea así se puede copiar y pegar ;)

#2 - sergio

gracias por el apunte ;-)

#3 - Guillermo Conde

Hola!!!
Quisiera saber como puedo generar en php un archivo con extension .xml de manera automática, porque actualmente tengo un archivo en php que me extrae informacion de la BD en MySQL y lo exporto a .xml de manera manual

Proyectos

  • Logotipo de Cordobapedia
  • nuno21 - Foro en español de Nuno Bettencourt
  • Microflog

Last.fm

 

Discos

  • Population 1 - Population 1 (2002)
  • Extreme - Saudades de Rock (2008)
  • Rockabye Baby! Lullaby Renditions of Metallica
  • Portada de Pearl Jam - Pearl Jam (2006)
  • Hay mucho Rock'n Roll - Platero y Tú

Mi blog soporta myComments

La culpa de todo no fue sólo mía...