getFilename()) || preg_match('/^[a-zA-Z0-9]{2}$/', basename(dirname($fileinfo->getPathname())))) { $todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink'); $todo($fileinfo->getRealPath()); } } // After deleting files and subdirectories, delete the 2 letter/number directories themselves $dirs = new DirectoryIterator($cacheDir); foreach ($dirs as $dir) { if ($dir->isDir() && !$dir->isDot() && preg_match('/^[a-zA-Z0-9]{2}$/', $dir->getFilename())) { rmdir($dir->getRealPath()); } }