Ver Mensaje Individual
  #14 (permalink)  
Antiguo 03/02/2012, 00:05
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Recursividad?

Cualquier duda es mejor recurrir al manual de PHP para saber con exactitud que hace cada función...

Código PHP:
Ver original
  1. <?php
  2. //Obtiene la información del archivo (nombre y extensión)
  3. function getInfo($file,$type) {
  4.     //separamos el nombre del archivo por el punto
  5.     $info = explode('.',$file);
  6.     if ($type=='name') {
  7.         //retornamos el nombre
  8.         return $info[0];
  9.     }else {
  10.         //retornamos la extensión
  11.         return $info[1];
  12.     }
  13. }
  14.  
  15. //definimos el url de la carpeta que vamos a leer el archivo
  16. $path = 'prueba3';
  17. //creamos el objeto dom que generará el XML
  18. $dom = new DOMDocument('1.0', 'utf-8');
  19.  
  20. //creamos un primer elemento 'galerias' que guardara a su vez todos
  21. //los demas elementos que compondran el xml
  22. $galerias = $dom->createElement('galerias');
  23.  
  24. //verificamos si podemos abrir la carpeta para poder leer su contenido
  25. if ($openPath = opendir($path)) {
  26.     //recorremos los archivos que contiene la carpeta padre
  27.     while($file = readdir($openPath)) {
  28.         //verificamos que el valor retornado es realmente un valor
  29.         if ($file != '.' && $file != '..') {
  30.             //como tendremos archivos de diferente tipo (jpg y txt)
  31.             //vamos a leer unicamente los jpg para no duplicar info
  32.             if (getInfo($file,'type') == 'jpg') {
  33.                 //creamos un elemento en el dom del xml 'item'
  34.                 //para guardar la imagen y su descripción
  35.                 $galeria = $dom->createElement('item');
  36.  
  37.                 //Obtenemos el nombre del archivo
  38.                 $name = getInfo($file,'name');
  39.                
  40.                 //creamos el elemento en el dom del xml para
  41.                 //guardar el nombre completo de la imagen
  42.                 $imagen = $dom->createElement('imagen',$file);
  43.                
  44.                 //creamos el url del archivo txt que contiene la decripción
  45.                 //cabe aclarar que tiene que tener el mismo nombre que la imagen
  46.                 //que tendrá su descripción
  47.                 $urlTxt = $path.'/'.getInfo($file,'name').'.txt';
  48.                
  49.                 //veriicamos la existencia del archivo
  50.                 if (file_exists($urlTxt)) {
  51.                     //obtenemos el contenido del archivo txt
  52.                     $content = file_get_contents($urlTxt);
  53.                     //creamos el elemento que contendrá la descripción
  54.                     //de la imagen
  55.                     $descript = $dom->createElement('decript',$content);
  56.                 }else {
  57.                     //si el archivo no existe indicamos que no se pudo encontrar
  58.                     $descript = $dom->createElement('decript','not found!!!');
  59.                 }
  60.                
  61.                 //agremamos el elemento imagen y descripción al elemento padre 'item'
  62.                 $galeria->appendChild($imagen);
  63.                 $galeria->appendChild($descript);
  64.                
  65.                 //agregamos el elemento 'item' al elemento padre 'galerias'
  66.                 $galerias->appendChild($galeria);
  67.             }
  68.            
  69.         }
  70.     }
  71. }
  72.  
  73. //cerramos la carpeta abierta
  74. closedir($openPath);
  75.  
  76. //por fin agregamos todos los elementos al xml final
  77. $dom->appendChild($galerias);
  78. //guardamos el xml en un archivo fisico con el nombre galerias.xml
  79. $dom->save('galerias.xml');
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)