【问题标题】:RecursiveIterator return array with file extensionRecursiveIterator 返回带有文件扩展名的数组
【发布时间】:2014-12-01 23:32:45
【问题描述】:

我正在使用此功能查找文件夹和子文件夹中的所有图片:

function rsearch($folder, $pattern) {
    $dir = new RecursiveDirectoryIterator($folder);
    $ite = new RecursiveIteratorIterator($dir);
    $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH);
    $fileList = array();
    foreach($files as $file) {
        $fileList = array_merge($fileList, $file);
    }
    return $fileList;
}
$list_of_file=rsearch($data_directory,'/^.+\.(jpg|jpeg|png|gif|tiff)$/i');
echo 'longueur '.count($list_of_file);
print_r($list_of_file);

结果如下:

    Array
(
    [0] => file-user/rep/username/images\asura.jpg
    [1] => jpg
    [2] => file-user/rep/username/images\beyourself.jpg
    [3] => jpg
    [4] => file-user/rep/username/images\subfolder\logo3.png
    [5] => png
    [6] => file-user/rep/username/images\gmail.gif
    [7] => gif
)

1) 如何将文件名前的\ 更改为/

2) 为什么数组在文件本身之后返回扩展名?如何预防?

【问题讨论】:

    标签: php regex iterator


    【解决方案1】:

    尝试 var_dump $files 你会看到。如果您不想将 $file 数组的两个元素都放入 $fileList 中,则不要使用 array_merge :

       foreach($files as $file) {
           $fileList[] = $file[0];
       }
    

    对于非常粗略和准备好的修复 \ 做一个 str_replace 或类似的。比如:

       foreach($files as $file) {
           $fileList[] = str_replace('/','\\',$file[0]);
       }
    

    【讨论】:

    • 谢谢,太好了。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2017-03-21
    相关资源
    最近更新 更多