使用 scandir() 查找目录中的文件夹 (PHP)

2022-08-30 14:05:28

我正在使用这段代码:

$target = 'extracted/' . $name[0];  
$scan = scandir($target);

扫描用于 zip 上传的文件夹的目录。我希望能够找到文件夹内的所有文件夹,以便删除它们及其内容,只保留目录中的文件。$target$target

返回文件夹的内容后,我不知道如何区分文件夹和文件,以便能够删除文件夹。

另外,我被告知该函数无法删除其中包含内容的文件夹,有什么办法可以解决这个问题吗?rmdir()

谢谢 本


答案 1

要确定您是否有文件夹或文件,请使用以下函数和is_dir()is_file()

例如:

$path = 'extracted/' . $name[0];
$results = scandir($path);

foreach ($results as $result) {
    if ($result === '.' or $result === '..') continue;

    if (is_dir($path . '/' . $result)) {
        //code to use if directory
    }
}

答案 2

最好使用 DirectoryIterator

$path = 'extracted'; // '.' for current
foreach (new DirectoryIterator($path) as $file) {
    if ($file->isDot()) continue;

    if ($file->isDir()) {
        print $file->getFilename() . '<br />';
    }
}

推荐