Foros del Web » Programando para Internet » PHP »

no furula depurar directorio

Estas en el tema de no furula depurar directorio en el foro de PHP en Foros del Web. que tal gente estuve buscando mucho por aquí por el foro el codigo para borrar carpetas y archivos y pude formar este codigo que me ...
  #1 (permalink)  
Antiguo 02/03/2012, 12:05
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
no furula depurar directorio

que tal gente

estuve buscando mucho por aquí por el foro el codigo para borrar carpetas y archivos y pude formar este codigo que me funciona bien si dentro de la carpeta solo hay archivos:

Código PHP:
$ruta"../../images/uploads/".$nombre_carpeta;
foreach (
glob($ruta."/*.*") as $filename) { 
    
unlink($filename); 
}
rmdir ($ruta); 
pero si hay una carpeta dentro, algo asi:

carpeta
--------archivo1
--------archivo2
--------subcarpeta1
-----------------------archivo1
-----------------------archivo2

ya no funciona, entonces me avente otra busqueda en el foro y arme otro codigo sencillo asi:

Código PHP:
$ruta"../../images/uploads/".$nombre_carpeta;
foreach (
glob($ruta."/*.*") as $filename) { 
        if (
is_dir($filename)) { 
            
rmdir($filename); 
           } 
        else{
            
unlink($filename);
        } 
}
rmdir ($ruta); 
pero no me funciona, solo borra los archivos y la carpeta no,

sucede que rmdir borra solo si esta vacia, entonces la logica seria:

al preguntar if (is_dir($filename)) {

antes de rmdir($filename);

debo entrar a la subcarpeta y borrar lo de adentro, luego salirme de ella y ahora si hacer el rmdir($filename);

como puedo hacer eso?

ahora, pasa que probe asi:

carpeta
--------archivo1
--------archivo2
--------subcarpeta1

para ver si al estar vacía la subcarpeta la borraba y aun asi no la borra

gracias de antemano
  #2 (permalink)  
Antiguo 02/03/2012, 12:16
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: no furula depurar directorio

Para eso necesitas una función recursiva:
http://www.williamsmendez.com/2009/0...rsivo-con-php/
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 02/03/2012, 12:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: no furula depurar directorio

Lo que necesitas es aplicar recursivamente tu función de borrado, investiga el término.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 02/03/2012, 12:23
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: no furula depurar directorio

Código PHP:
<?php
function deleteDirectory($dir) {
    if (!
file_exists($dir)) return true;
    if (!
is_dir($dir) || is_link($dir)) return unlink($dir);
        foreach (
scandir($dir) as $item) {
            if (
$item == '.' || $item == '..') continue;
            if (!
deleteDirectory($dir "/" $item)) {
                
chmod($dir "/" $item0777);
                if (!
deleteDirectory($dir "/" $item)) return false;
            };
        }
        return 
rmdir($dir);
    }
?>
La mayoria de las dudas y ejemplos las pueden encontrar en el manual de php.net
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 02/03/2012, 13:16
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: no furula depurar directorio

gracias como siempre, ya implemente ambos códigos y van ok

ahora me pondré a analizarlos para entender el funcionamiento

gracias a todos

Etiquetas: depurar, directorio
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




La zona horaria es GMT -6. Ahora son las 21:49.