Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/12/2011, 11:55
Avatar de Marvin
Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Información APORTE: Eliminar carpeta recursivamente

Señores,

Ayer me vi en la necesidad de hacer una rutina que pudiera eliminar todo lo que existe en una carpeta junto con la carpeta, dado que se crea para generar un archivo rar en el sistema y al momento de generar el rar, la carpeta ya no me sirve.

Descripcion
Funcion que elimina el contenido completo de una carpeta incluyendo la misma.

**OJO** Las acciones de eliminar se encuentran comentadas para que puedan testear y no eliminar algo importante

Código PHP:
Ver original
  1. function rrmdir($dir){
  2.         echo 'Abriendo directorio '.$dir.'<br>';
  3.         if(is_dir($dir)){
  4.             $archivos = scandir($dir);
  5.             $numA = count($archivos);
  6.             for($x=0;$x<$numA;$x++){
  7.                 if($archivos[$x] != '.' && $archivos[$x] != '..'){
  8.                     $file = explode('.',$archivos[$x]);
  9.                     $numC = count($file);
  10.                     if(isset($file[$numC-1])){ // Si quisieran eliminar solo una extension agregan la extension && $file[$numC-1] == 'jpg'
  11.                         echo 'Eliminando archivo'.$dir."/".$archivos[$x].'<br>';
  12.                         //unlink($dir."/".$archivos[$x]);
  13.                     }elseif(is_dir($dir."/".$archivos[$x])){
  14.                         //Determinar si tiene archivos la carpeta
  15.                         $archivos2 = scandir($dir."/".$archivos[$x]);
  16.                         $numB = count($archivos2);
  17.                         if($numB > 2){
  18.                             //Si lo usan en una clase esta es la linea
  19.                             //$this->rrmdir($dir."/".$archivos[$x]);
  20.                             //Si lo usan como funcion usen esta otra linea
  21.                             //rrmdir($dir."/".$archivos[$x]);
  22.                         }else{
  23.                             echo 'Eliminando directorio '.$dir.'<br>';
  24.                             //rmdir($dir."/".$archivos[$x]);
  25.                         }
  26.                     }
  27.                 }
  28.             }
  29.             echo 'Eliminando directorio '.$dir.'<br>';
  30.             //rmdir($dir);
  31.         }
  32.     }

Forma de uso
Código PHP:
Ver original
  1. rrmdir('carpeta');
  2. //o
  3. rrmdir('carpeta/carpeta');
  4. //siempre pensando que en el mismo nivel de la carpeta se encuentra este archivo

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 09/01/2013 a las 13:55 Razón: Solo permitia eliminar imagenes, ahora deberia servir para todo tipo de archivos.