php 禁止列出目录文件,递归列出PHP中的目录/文件,并忽略数组中的目录/文件

我试图使用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 . '
';

}

我尝试了不同的方法来检查目录/文件是否在数组中,但是还是行不通,或者目录没有被完全忽略…

这是目录结构的一个例子

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 . '
';

}

标签:php,recursion

来源: https://codeday.me/bug/20191127/2074960.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值