如何使用php仅获取没有文件名的所有文件夹子文件夹

如何使用php仅获取没有文件名的所有文件夹子文件夹,php,Php,我只想获得所有列表文件夹和子文件夹,没有文件名和文件名 示例输出: folder name: source/1 source/1/2 source/1/2/3 filename 0.jpg 1.jpg 3.jpg 这是我的代码,这段代码工作正常,但这段代码显示文件名为 $rootpath = 'source'; $fileinfos = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($rootpath) )

我只想获得所有列表文件夹和子文件夹,没有文件名和文件名 示例输出:

folder name:
source/1
source/1/2
source/1/2/3

filename
0.jpg
1.jpg
3.jpg
这是我的代码,这段代码工作正常,但这段代码显示文件名为

$rootpath = 'source';
$fileinfos = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootpath)
);
foreach($fileinfos as $pathname => $fileinfo) {
    if (!$fileinfo->isFile()) continue;

echo($pathname).'<br>';


}
输出

folder:
foldername/subfolder/

filename:
filename.jpg
谢谢

下面的代码片段可能会有所帮助。如果您决定只获取
文件
;只需将字符串“file”作为第三个参数传递给函数
scandirecursive
。默认情况下,该函数返回给定目录中所有
目录
子目录
的列表:
$directory
(第一个参数)。然而;您仍然可以一次性获得
目录
文件;只需传递字符串:
both
作为第三个参数

希望这对你没什么帮助。
干杯,祝你好运


下面的代码片段可能会有所帮助。如果您决定只获取
文件
;只需将字符串“file”作为第三个参数传递给函数
scandirecursive
。默认情况下,该函数返回给定目录中所有
目录
子目录
的列表:
$directory
(第一个参数)。然而;您仍然可以一次性获得
目录
文件;只需传递字符串:
both
作为第三个参数

希望这对你没什么帮助。
干杯,祝你好运


$fileinfo->isFile()
$fileinfo->isFile()
??否???
if($fileinfo->isDir()){/*directory*/}elseif($fileinfo->isFile()){/*file*/}
echo$pathname->getFilename()。
';如果没有“!”则getfinename不起作用可能使用getfilename或get foldername??如何使用preg_匹配???
$fileinfo->isFile()
$fileinfo->isFile()
??否???
if($fileinfo->isDir()){/*directory*/}elseif($fileinfo->isFile()){/*file*/}
echo$pathname->getFilename()。
';如果没有“!”则getfinename不起作用可能使用getfilename或get foldername??如何使用preg_匹配??如何使用preg_匹配此组合?当我只想显示文件夹和文件名时,如何区分array@dexter再次尝试更新后的帖子。。。还有,请阅读帖子了解一些信息。如何使用preg_搭配这个组合?当我只想显示文件夹和文件名时,如何区分array@dexter再次尝试更新后的帖子。。。请阅读这篇文章了解一些信息。
folder:
foldername/subfolder/

filename:
filename.jpg
    <?php

        $rootPath       = 'source';
        $regex          = null;

        /**
         * @param string $directory    => DIRECTORY TO SCAN
         * @param string $regex        => REGULAR EXPRESSION TO BE USED IN MATCHING FILE-NAMES
         * @param string $get          => WHAT DO YOU WANT TO GET? 'dir'= DIRECTORIES, 'file'= FILES, 'both'=BOTH FILES+DIRECTORIES
         * @param bool   $useFullPath  => DO YOU WISH TO RETURN THE FULL PATH TO THE FOLDER OR JUST ITS NAME?
         * @param array  $dirs         => LEAVE AS IS: USED DURING RECURSIVE TRIPS
         * @return array
         */
        function scanDirRecursive($directory, $regex=null, $get="dir", $useFullPath=false,  &$dirs=[], &$files=[]) {
            $iterator               = new DirectoryIterator ($directory);
            foreach($iterator as $info) {
                $fileDirName        = $info->getFilename();

                if ($info->isFile () && !preg_match("#^\..*?#", $fileDirName)) {
                    if($get == 'file' || $get == 'both'){
                        if($regex) {
                            if(preg_match($regex, $fileDirName)) {
                                if ($useFullPath) {
                                    $files[] = $directory . DIRECTORY_SEPARATOR . $fileDirName;
                                }
                                else {
                                    $files[] = $fileDirName;
                                }
                            }
                        }else{
                            if($useFullPath){
                                $files[]   = $directory . DIRECTORY_SEPARATOR . $fileDirName;
                            }else{
                                $files[]   = $fileDirName;
                            }
                        }
                    }
                }else if ($info->isDir()  && !$info->isDot()) {
                    $fullPathName   = $directory . DIRECTORY_SEPARATOR . $fileDirName;
                    if($get == 'dir' || $get == 'both') {
                        $dirs[]     = ($useFullPath) ? $fullPathName : $fileDirName;
                    }
                    scanDirRecursive($fullPathName, $regex, $get, $useFullPath, $dirs, $files);
                }
            }

            if($get == 'dir') {
                return $dirs;
            }else if($get == 'file'){
                return $files;
            }
            return ['dirs' => $dirs, 'files' => $files];
        }

        // GET ONLY DIRECTORIES IN THE 'source' FOLDER + SUB-FOLDERS
        $directories    = scanDirRecursive($rootPath, $regex, 'dir', false);

        // GET ONLY FILES IN THE 'source' FOLDER + SUB-FOLDERS
        $files          = scanDirRecursive($rootPath, $regex, 'file', false);

        // GET BOTH FILES & DIRECTORIES IN THE 'source' FOLDER + SUB-FOLDERS
        $both           = scanDirRecursive($rootPath, $regex, 'both', false);

        var_dump($directories);
        var_dump($files);
        var_dump($both);