gpt4 book ai didi

php - 递归地列出 PHP 中的目录/文件并忽略数组中的目录/文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:20 24 4
gpt4 key购买 nike

我正在尝试使用 RecursiveDirectoryIterator 和 RecursiveIteratorIterator 在 PHP 中递归地列出目录,但问题是,我需要忽略其中的一些目录和文件..

这是我目前所拥有的..

// Define here the directory you have platform installed.
//
$path = 'testing';

// List of directories / files to be ignored.
//
$ignore_new = array(
# Directories
#
'.git',
'testing/dir1',
'testing/dir2',
'testing/dir3',
'testing/dir8',
'public',

# Files
#
'.gitignore',
'.gitmodules',
'.CHANGELOG.md',
'.README.md',
);


$ite = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
foreach (new RecursiveIteratorIterator($ite) as $filename => $object)
{
echo $filename . '<br />';
}

我已经尝试了不同的方法来检查目录/文件是否在数组中,但是或者它不起作用,或者目录没有被完全忽略......

这是一个目录结构的例子

testing\
testing\.git
testing\.git\files & directories
testing\testing\dir1
testing\testing\dir2
testing\testing\dir3
testing\testing\dir8
testing\.gitignore
testing\.gitmodules
testing\CHANGELOG.md
testing\README.md

这可能吗,或者我需要使用老式的方式在 PHP 中递归列出目录/文件?

谢谢!

最佳答案

您应该始终使用完整路径,因为您正在组合文件和文件夹

$path = __DIR__;

// List of directories / files to be ignored.
//
$ignoreDir = array('1.MOV.xml','.git','testing/dir1','testing/dir2','testing/dir3','testing/dir8','public');

/**
* Quick patch to add full path to Ignore
*/
$ignoreDir = array_map(function ($var) use($path) {
return $path . DIRECTORY_SEPARATOR . $var;
}, $ignoreDir);

$ite = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
foreach ( new RecursiveIteratorIterator($ite) as $filename => $object ) {

if (in_array($filename, $ignoreDir))
continue;

echo $filename . '<br />';
}

关于php - 递归地列出 PHP 中的目录/文件并忽略数组中的目录/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com