php - 使用 RecursiveDirectoryIterator::SKIP_DOTS 显示文件
问题描述
我期待这样的结果:
/path/to/files/test.png
/path/to/files/folder1/test.png
/path/to/files/folder2/test.png
相反,我得到:
/path/to/files/.hidden_folder1/test.png
/path/to/files/test.png
/path/to/files/folder1/test.png
/path/to/files/folder2/test.png
我不希望出现带有点的子目录:
我的代码如下:
$ufo = '/path/to/files/';
$Directory = new RecursiveDirectoryIterator($ufo,RecursiveDirectoryIterator::SKIP_DOTS);
$Iterator = new RecursiveIteratorIterator($Directory);
$Regex = new RegexIterator($Iterator, '/^.+(.png)$/i', RecursiveRegexIterator::GET_MATCH);
foreach($Regex as $name => $Regex){
echo $name.'<br>';
}
似乎 ::SKIP_DOTS 不起作用。
我也试过:
$ufo = '/path/to/files/';
$Directory = new RecursiveDirectoryIterator($ufo);
$Iterator = new RecursiveIteratorIterator($Directory,RecursiveDirectoryIterator::SKIP_DOTS);
$Regex = new RegexIterator($Iterator, '/^.+(.png)$/i', RecursiveRegexIterator::GET_MATCH);
foreach($Regex as $name => $Regex){
echo $name.'<br>';
}
上面的代码返回:
/path/to/files/folder1/test.png
/path/to/files/folder2/test.png
这会删除 .test_folder 子目录,但也会删除当前目录。
我尝试搜索无数示例,但无法找出正确的格式来递归返回文件,包括当前路径,同时排除以 .
解决方案
使用setFlags(RecursiveDirectoryIterator::SKIP_DOTS)
方法。尝试这个:
$ufo = '/path/to/files/';
$Directory = new RecursiveDirectoryIterator($ufo);
$Directory->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$Iterator = new RecursiveIteratorIterator($Directory);
$Regex = new RegexIterator($Iterator, '/^.+(.png)$/i', RecursiveRegexIterator::GET_MATCH);
foreach($Regex as $name => $Regex){
echo $name.'<br>';
}
类似的问题在这里。
推荐阅读
- protractor - 最后一个 ii 值仅在第二个 for 循环中返回
- javascript - 是否可以使用正则表达式连续验证字符串
- android - Flutter UI 第一屏坏了
- spring-boot - Spring Boot部署成功后调用服务方法
- php - 是否可以从 PHP 中的十六进制/二进制(原始数据)值生成音频文件?
- javascript - 如何使用nodejs中的readline查找文件中代码的条件?
- python - 如何通过 python 客户端获取 kubernetes 中 pod 的日志和描述
- blockchain - 如何解码 SHA256 哈希值并在 Solidity 中检索数据
- angular - 如何使用 Angular 7 更新 firebase relatime 数据库中的属性键
- mysql - 为什么使用 mysqldump 导入数据后写入的块大小固定?