Saludos, se que en la web hay mucho info con respecto al borrado recursivo de carpetas en php, ya sea que estos tengan contenido y otras subcarpetas dentro, pero mi problema es el siguiente:
Necesito poder realizar el borrado a partir de un directorio dado y poder determinar si elimino tambien la carpeta que envio de referencia o si deseo eliminar solo el contenido que posea dentro suyo (archivos y/o subcarpetas), lo ejemplificare con la siguiente grafica:
Código HTML:
carpeta_01
|____ archivo_01
|____ archivo_02
|____ archivo_03
|____ carpeta_02
|____ archivo_04
|____ archivo_05
|____ carpeta_03
|____ carpeta_04
|____ archivo_06
Teniendo en cuenta el ejemplo anterior, la idea seria enviar como parametros en una funcion:
- la ruta a partir del cual hacer el borrado de archivos y/o subcarpetas.
- un valor que indique si eliminar la carpeta que se envia como ruta principal.
A continuacion dejo un script que estoy intentando adaptar a esto que les comente, pero hasta el momento no puedo lograr que en caso de no querer eliminar la carpeta raiz de mi parametro, esto suceda ya que siempre me la elimina.
Código PHP:
Ver original<?php
function deldir($directorio, $dirPrincipal, $delDirPasado)
{
$dirPrincipal = rtrim($dirPrincipal, '/') .'/'; $directorio = rtrim($directorio, '/') .'/';
$carpetaActual = opendir($directorio); while(($enlace = readdir($carpetaActual)) !== false) {
$porBorrar = $directorio . $enlace;
if(is_dir($porBorrar) && ($enlace != "." && $enlace != "..")) { deldir
($porBorrar, $dirPrincipal, $delDirPasado); } elseif($enlace != "." && $enlace != "..") { unlink($porBorrar); } }
{
# 0: NO eliminar raiz | 1: SI eliminar raiz
if($delDirPasado == 1) { $directorio = $dirPrincipal; }
}
}
# llamada a la funcion: deldir(url_carpeta, url_carpeta, eliminarRaiz);
# tanto el parametro 1 y 2 son iguales, el parametro 3 indica con 0: NO eliminar raiz | 1: SI eliminar raiz
deldir("carpeta_01", "carpeta_01", 0);
?>
Teniendo en cuenta esto, la idea es que si envio como carpeta a borrar "
carpeta_01" y como parametro 3 el valor "
0", no elimine la "
carpeta_01", pero si envio como parametro 3 el valor "
1" si lo haga.
Si prueban el ejemplo notaran que enviando
0 ó
1 en el parametro 3 de todas maneras borra la carpeta raiz pasada.
¿Alguien me podría ayudar para ver donde esta el error? Desde ya muchas gracias.