es un tema algo complicado, ya que necesitas usar funciones recursivas... y claro,
unlink() para borrar archivos y
rmdir() para borrar carpetas...
claro que es el mismo concepto para listar carpetas, si
buscas en el foro seguro encuentras algo...
Edito: muy buena función
abimaelrc