php遍历多层级文件夹提取指定格式文件

时间:2020-01-07
本文章向大家介绍php遍历多层级文件夹提取指定格式文件,主要包括php遍历多层级文件夹提取指定格式文件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<?php
/**
 * opendir() 函数打开一个目录句柄
 * readdir() 函数返回由 opendir() 打开的目录句柄中的条目。
 * is_dir() 函数检查指定的文件是否是目录。
 * @param string $file 返回的文件条目
 * @param string $format 需要提取的文件格式
 * @param string $dir 文件的路径
 * @param resource $handle 打开的文件目录句柄
 */
function my_scandir($dir,$format)
{
    $format_arr = explode(',',$format);
    //提取文件放到的目标路径(根目录下的文件格式前三个字符命名的文件夹)
    $new_dir = iconv("UTF-8", "GBK", $_SERVER['DOCUMENT_ROOT'].'/'.substr($format,0,3));
    if (!file_exists($new_dir)){
        mkdir ($new_dir,0777,true);
    }
    //检测是否存在文件
    if (is_dir($dir)) {
        //打开目录
        if ($handle = opendir($dir)) {
            //返回当前文件的条目
            while (($file = readdir($handle)) !== false) {
                //去除特殊目录
                if ($file != "." && $file != "..") {
                    //判断子目录是否还存在子目录
                    if (is_dir($dir . "/" . $file)) {
                        //递归调用本函数,再次获取目录
                        my_scandir($dir . "/" . $file,$format);
                    } else {
                        //判断文件格式
                        if(in_array(strtolower(pathinfo($file,PATHINFO_EXTENSION)),$format_arr)){
                        // if ($format == pathinfo($file,PATHINFO_EXTENSION)) {
                            $i = '';
                            //判断新文件夹中是否已存在同名文件
                            do {
                                $newFile=$new_dir.'/'.$i.$file;
                                $i++;
                            } while (file_exists($newFile));
                            echo $newFile.'<br>';
                            copy($dir."/".$file,$newFile);
                            unlink($dir."/".$file);
                        }
                    }
                }
            }
            closedir($handle);
        }
    }
}
my_scandir("D:\zhifubao111",'avi,mov,rmvb,rm,flv,mp4,3gp'); //需要执行操作的路径,需要提取的文件格式(英文逗号隔开)

原文地址:https://www.cnblogs.com/zsw1126/p/12161301.html