Borrar un directorio de forma recursiva

En ocasiones quieres borrar desde PHP un directorio contenga lo que contenga… para esa tarea cree esta función:

function rd ($path) {
  foreach (array_diff(scandir($path), ['', '.', '..']) as $file) {
    if (is_file($path . DIRECTORY_SEPARATOR . $file)) {
      unlink($path . DIRECTORY_SEPARATOR . $file);
    } else {
      rd($path . DIRECTORY_SEPARATOR . $file);
    }
  }
  rmdir($path);
}

Hace años que la cree y por tanto seguro que es mejorable, pero cumple su función a la perfección.

Actualización (2017-02-11): Utilizo la constante DIRECTORY_SEPARATOR para construir las rutas, lo que evidentemente es más versátil y nos evitará posibles errores.

Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *