Foros del Web » Programando para Internet » PHP »

Eliminar todo el contenido de una carpeta

Estas en el tema de Eliminar todo el contenido de una carpeta en el foro de PHP en Foros del Web. Hola, quería saber que tenía que modificar para que la función de abajo no elimine al directorio que aparece en remove_directory(" ../archivos ") . Ya ...
  #1 (permalink)  
Antiguo 30/01/2008, 15:25
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 13 años, 6 meses
Puntos: 36
Eliminar todo el contenido de una carpeta

Hola, quería saber que tenía que modificar para que la función de abajo no elimine al directorio que aparece en remove_directory("../archivos") . Ya que la función lo elimina.


Código PHP:
<?

function remove_directory($directorio) {  
  if (
$handle opendir("$directorio")) {
    while (
false !== ($item readdir($handle))) {
      if (
$item != "." && $item != "..") {
        if (
is_dir("$directorio/$item")) {
          
remove_directory("$directorio/$item");
        } else {
          
unlink("$directorio/$item");
        }
      }
    }
    
closedir($handle);

    
rmdir($directorio);
  }
}

remove_directory("../archivos");

?>

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 30/01/2008, 15:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Eliminar todo el contenido de una carpeta

Que no elimine el directorio ../archivos?

La linea que dice rmdir($directorio); es la que se encarga de eso (http://www.php.net/rmdir), por lo que tendrías que quitarla para evitarlo.

Un saludo,
  #3 (permalink)  
Antiguo 30/01/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 1 mes
Puntos: 2135
Re: Eliminar todo el contenido de una carpeta

Quita la linea rmdir final para que no remueva el directorio.

Saludos.
  #4 (permalink)  
Antiguo 31/01/2008, 07:03
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 13 años, 6 meses
Puntos: 36
Re: Eliminar todo el contenido de una carpeta

Gracias okram y GatorV. Pero si quito esa línea (rmdir($directorio);), no me elimina los directorios que están dentro de ../archivos, solamente me elimina todos los archivos de todos los directorios que contiene ../archivos.

Lo que quiero es que elimine todas las carpetas y archivos que estén dentro de ../archivos.

Gracias
  #5 (permalink)  
Antiguo 31/01/2008, 07:31
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Eliminar todo el contenido de una carpeta

Bueno, en todo caso indícale a la función cuándo es un subdirectorio y debe borrarse cuando la llamas recursivamente, y cuál es el directorio principal y debe quedarse. Algo así:

Código PHP:
# $is_subdir deberá ser true cuando se esté referenciando a un subdirectorio
function remove_directory($directorio$is_subdir false) {  
  if (
$handle opendir("$directorio")) {
    while (
false !== ($item readdir($handle))) {
      if (
$item != "." && $item != "..") {
        if (
is_dir("$directorio/$item")) {
          
# son subdirectorios y que debe borrarlos
          
remove_directory("$directorio/$item"true);
        } else {
          
unlink("$directorio/$item");
        }
      }
    }
    
closedir($handle);
 
    
# Si es un subdirectorio, debe borrarlo
    
if($is_subdir != falsermdir($directorio);
  }
}
 
remove_directory("../archivos"); // remove_directory("../archivos", false); 
Un saludo,
  #6 (permalink)  
Antiguo 31/01/2008, 12:21
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 13 años, 6 meses
Puntos: 36
Re: Eliminar todo el contenido de una carpeta

Gracias okram! Funciona perfecto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:36.