Php 在递归迭代器中指定文件类型

Php 在递归迭代器中指定文件类型,php,Php,我正在尝试创建一个表单,允许用户选择复选框,当他们提交时,它将在web目录中搜索他们从jpg、gif、html等中选中的特定文件类型。我完成了表单,它将类型的变量传递到一个数组,我有表单的其余部分,用于压缩文件并将其流式传输以供下载。我只是被困在如何指定文件类型上。这就是我开始时所做的,以确保它能够实际提取文件名并将其放入变量中,并且能够正常工作: $rootpath = '.'; $files = $_POST['file_types']; $fileinfos = new Recursive

我正在尝试创建一个表单,允许用户选择复选框,当他们提交时,它将在web目录中搜索他们从jpg、gif、html等中选中的特定文件类型。我完成了表单,它将类型的变量传递到一个数组,我有表单的其余部分,用于压缩文件并将其流式传输以供下载。我只是被困在如何指定文件类型上。这就是我开始时所做的,以确保它能够实际提取文件名并将其放入变量中,并且能够正常工作:

$rootpath = '.';
$files = $_POST['file_types'];
$fileinfos = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootpath)
);
foreach($fileinfos as $pathname => $fileinfo) {
    if (!$fileinfo->isFile()) continue;{
    $files[] .= substr($pathname, 2);
    }
}
我应该使用什么来提取仅在以下列表中指定的文件类型

$_POST['file_types']
编辑:

对于那些可能有所帮助的人来说,这是最终有效的解决方案:

$rootpath = "../";
        foreach ($types as $k => $v)
        {
        $types_array[] .= $v;
    }
    //Run all function then run it through checker and pull out the files we want
    $directory = new RecursiveDirectoryIterator($rootpath,RecursiveDirectoryIterator::SKIP_DOTS);
    $iterator = new RecursiveIteratorIterator($directory,RecursiveIteratorIterator::LEAVES_ONLY);
    $extensions = $types_array;
    foreach ($iterator as $fileinfo) {
        if (in_array($fileinfo->getExtension(), $extensions)) {
            $files[] = substr($fileinfo->getPathname(), 2); /* Fill the array removing the "./" to make an echo of the file names easier to read for the end user */
        }
    }

问题还不清楚$fileinfo->getExtension?附言:你的foreach身体上有一些奇怪的花括号。花括号是我在foreach身体上有更多花括号时留下的,它们可以走了,但我的问题很简单。如何将其转换为递归迭代器,该迭代器可以指定要提取的文件类型,而不仅仅是执行所有文件。$fileinfo->getExtension+FilterIterator?$fileinfo->getExtension成功了,感谢您为我指明了明确的方向!