Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/05/2011, 09:30
Avatar de djmashe
djmashe
 
Fecha de Ingreso: julio-2007
Ubicación: Posadas, Misiones
Mensajes: 52
Antigüedad: 16 años, 9 meses
Puntos: 2
De acuerdo Respuesta: Eliminar carpetas recursivamente con PHP, con opciones

Bueno, me auto respondo luego de estar peleando un poco mas con el script .
A continuación dejo el código necesario para eliminar un directorio dado, especificando si borrar todo el directorio o solamente el contenido que posee dentro:

Código PHP:
Ver original
  1. <?php
  2. function deldir($directorio, $borrarRaiz = false)
  3. {  
  4.  $directorio = rtrim($directorio, '/') .'/';
  5.  
  6.  $carpetaActual = opendir($directorio);
  7.  while(($contenidoCarpeta = readdir($carpetaActual)) !== false)
  8.  {
  9.   $rutaCompleta = $directorio . $contenidoCarpeta;
  10.   if($contenidoCarpeta != '.' && $contenidoCarpeta != '..')
  11.   {              
  12.    if(is_dir($rutaCompleta)) { deldir($rutaCompleta); }
  13.    else                      { unlink($rutaCompleta); }
  14.   }
  15.  }
  16.  closedir($carpetaActual);
  17.  
  18.  if($borrarRaiz == false)
  19.  {
  20.   if(!rmdir($directorio)) { return false; }
  21.  }
  22.  return true;
  23. }
  24. ?>

y la llamada a la función seria:


Código PHP:
Ver original
  1. <? 
  2.    $carpeta   = "../temp/";
  3.    $borrarRaiz = true; #true: deja la carpeta pero elimina el contenido. false: borra todo
  4.   echo ($borrarRaiz == false) ? "<h1>Borrado completo, incluyendo la raiz: $carpeta</h1>" : "<h1>Borrando solo el contenido de: $carpeta</h1>";
  5.    $rta = deldir($carpeta, $borrarRaiz);    
  6.    echo ($rta) ? "<p style='color:green'>Borrado con exito</p>" : "<p style='color:red'>Error en el borrado</p>";  
  7.   ?>


Desde ya, acepto sugerencias a los que quieran optimizar el mismo.