如何使用php检查文件夹中的某些文件扩展名

时间:2019-01-14 14:10:52

标签: php file-extension

我有一个名为uploads的文件夹,其中包含许多文件。我想找出其中是否有.zip文件。如何使用php检查其中是否有.zip文件?

3 个答案:

答案 0 :(得分:3)

使用glob()函数。

$result = glob("my/folder/uploads/*.zip");

它将返回带有* .zip文件的数组。

答案 1 :(得分:3)

@Bemhard已经给出了答案,我正在添加更多信息以备将来使用:

如果您要在uploads文件夹中运行脚本,则只需要调用glob('*.zip')

<?php
foreach(glob('*.zip') as $file){
    echo $file."<br/>";
}
?>

如果您有多个文件夹,并且其中包含多个zip文件,那么您只需要从根目录运行脚本即可。

<?php
$dir = __DIR__; // will get the exact path
$dirs = array_filter(glob('*'), 'is_dir'); // filter is directory or not.

$i = 1;
foreach ($dirs as $key => $value) {
    foreach(glob($value.'/*.zip') as $file){
        echo $file."<br/>"; // this will print all files inside the folders.
    }   
    $i++;
}
?>

还有一点,如果您要删除此活动中的所有zip文件,则只需要通过以下方式unlink个文件即可:

<?php
$dir = __DIR__; // will get the exact path
$dirs = array_filter(glob('*'), 'is_dir'); // filter is directory or not.

$i = 1;
foreach ($dirs as $key => $value) {
    foreach(glob($value.'/*.zip') as $file){
        echo $file."<br/>"; // this will print all files inside the folders.
        unlink($file); // this will remove all files.
    }   
    $i++;
}
?>

参考: Unlink Glob

答案 2 :(得分:2)

使用scandirpathinfo

也会有所帮助
 /**
 * 
 * @param string $directoryPath the directory to scan
 * @param string $extension the extintion e.g zip
 * @return []
 */
function getFilesByExtension($directoryPath, $extension)
{

    $filesRet = [];
    $files = scandir($directoryPath);
    if(!$files) return $filesRet;
    foreach ($files as $file) {
        if(pathinfo($file)['extension'] === $extension) 
            $filesRet[]= $file; 
    }

    return $filesRet;
}

它可以像

一样使用
 var_dump(getFilesByExtension("uploads/","zip"));