PHP:使用 scandir 从多个子目录中获取所有 zip 文件

BGTabulation BGTabulate

我有一个文件夹 store_files ,我有多个子文件夹。现在我可以获取所有文件夹和所有文件。现在我想获取所有文件夹,除了 zip 文件之外别无他物。我尝试添加条件,如果文件扩展名等于 zip 但似乎不起作用。如果我添加 $ext == 'zip' 输出中不会显示任何内容。有没有另一种方法来获取特定文件,例如在图像中有一个glob($getDirectory. '*.zip')

                function listFolderFiles($dir){
                    $ffs = scandir($dir);
                    echo '<ol>';
                    foreach($ffs as $ff){
                        $ext = pathinfo($ff, PATHINFO_EXTENSION);

                        if($ff != '.' && $ff != '..' && $ext == 'zip'){
                            echo '<li>';
                            $str = preg_replace('/\D/', '', $ff);
                            $str = substr($str, 0,-1);

                            $getYear = substr($str, 0,4);
                            $getMonth = substr($str, -4,2);
                            $getDay = substr($str, -2,2);
                            $theDate = $getYear.'-'.$getMonth.'-'.$getDay;
                            $theRealDate = date('Y M j', strtotime($theDate));
                            echo $theRealDate;


                            if(is_dir($dir.'/'.$ff)){
                             listFolderFiles($dir.'/'.$ff);
                            }

                            echo '</li>';
                        }

                    }
                    echo '</ol>';
                }
                listFolderFiles('store_files');
吉姆斯坦普

我认为您的问题源于这样一个事实,scandir()即(本身)不是递归目录搜索,它仅直接在指定目录中列出文件和目录。listFolderFiles()如果您检测到它$ff是一个目录,那么您已经在递归调用您的函数时考虑到了这一点。但是,您的问题是您已经在之前的 if 语句中过滤掉了目录(假设您的目录不以“.zip”结尾)。我认为以下功能是您所追求的:

            function listFolderFiles($dir){
                $ffs = scandir($dir);
                echo '<ol>';
                foreach($ffs as $ff){
                    $ext = pathinfo($ff, PATHINFO_EXTENSION);

                    if($ff != '.' && $ff != '..' && (is_dir($dir.'/'.$ff) || $ext == 'zip')){
                        echo '<li>';
                        $str = preg_replace('/\D/', '', $ff);
                        $str = substr($str, 0,-1);

                        $getYear = substr($str, 0,4);
                        $getMonth = substr($str, -4,2);
                        $getDay = substr($str, -2,2);
                        $theDate = $getYear.'-'.$getMonth.'-'.$getDay;
                        $theRealDate = date('Y M j', strtotime($theDate));
                        echo $theRealDate;


                        if(is_dir($dir.'/'.$ff)){
                         listFolderFiles($dir.'/'.$ff);
                        }

                        echo '</li>';
                    }

                }
                echo '</ol>';
            }
            listFolderFiles('store_files');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用find删除除某个子目录中的所有文件以外的所有文件

使用Java以非递归方式获取目录及其子目录中的所有文件

PHP获取所有文件,但不在子目录中

如何列出Zip存档中的所有* .doc文件,包括子目录中的文件?

给定父目录的所有子目录中的zip文件

Python 2.7-使用scandir遍历所有子目录并返回列表

如何使用curl下载多个子目录中的多个文件?

在 zip 的子目录中添加文件

如何解压缩我的子目录中的所有 zip 文件夹?

使用Shell在多个子目录中运行可执行程序文件

使用Cygwin在多个子目录中合并CSV文件

带有土耳其语字符的PHP scandir文件名

尝试使用Bat文件获取目录和子目录中所有文件的行数

如何在多个子目录中找到相同扩展名的所有文件并使用 python 将它们移动到单独的文件夹?

使用纯c ++(跨平台)获取特定路径中的所有目录/文件和子目录

在Mac OS X中使用命令行“ zip”工具递归压缩目录和子目录中的文件,并从所有子文件夹中排除.DS_Store文件

使用PHP从目录中读取文件哪个更好-glob()或scandir()或readdir()?

使用scandir获取按时间排序的文件名

如何使用vim打开当前目录和所有子目录中的所有文件?

如何建立目录中所有文件的索引,包括子目录和ZIP文件的内容?

如何压缩大量子目录,并让每个 zip 文件包含 N 个子目录

从目录和所有子目录获取所有文件,但不包含一个子目录

将“ iconv”应用于所有子目录中的所有PHP文件

列出目录及其子目录中的所有.csv文件uisng PHP

PHP 删除目录和任何子目录中的所有空文件

如何在php中列出目录,子目录和所有文件

使用Unix遍历目录及其子目录中的所有文件

使用bash terminal命令打开目录和子目录中的所有文件?

使用终端将内容/文件复制到目录中的所有子目录