使用带有FTP的RecursiveDirectoryIterator类

时间:2014-05-07 15:15:26

标签: php recursion ftp directory

我试图将FTP服务器的directorty和文件结构变成这样的数组:

Array
(
    [test] => Array
        (
            [css] => Array
                (
                    [0] => a.css
                    [1] => b.css
                    [2] => c.css
                    [3] => css.php
                    [4] => css.run.php
                )

            [CSV] => Array
                (
                    [0] => abc.csv
                )

            [image] => Array
                (
                    [0] => a.jpg
                    [1] => ab.jpg
                    [2] => a_rgb_0.jpg
                    [3] => a_rgb_1.jpg
                    [4] => a_rgb_2.jpg
                    [5] => f.jpg
                )

            [img] => Array
                (
                    [users] => Array
                        (
                            [0] => a.jpg
                            [1] => a_rgb_0.jpg
                        )

                )

        )

RecursiveDirectoryIterator类可以完美地工作,但有没有办法将它与FTP数据流一起使用?

1 个答案:

答案 0 :(得分:0)

你可以使用一个简单的递归函数,如下所示:

function listDir($ftp_con,$dir)
    {
    $array_list = array();
    $list = ftp_nlist($ftp_con,$dir);
    foreach ($list as $file)
        {
        $pathinfo = pathinfo($file);
        if ($pathinfo['extension'] == '')
            {
            if ($pathinfo['basename'] != '.' and $pathinfo['basename'] != '..')
                $array_list[$pathinfo['basename']] = listDir($ftp_con,$file);
            }
        else
            $array_list[] = $pathinfo['basename'];
        }
    return $array_list;
    }

$ftp_con = ftp_connect('ftphost.com', 21, 60);
ftp_login($ftp_con,'username','password');
print_r(listDir($ftp_con,'path/to/start/directory'));

请注意,使用别名可能会导致无限循环。