From 916497f3294e8662b6de946b3c45a030bb313a99 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 13 Apr 2018 22:10:40 +0200 Subject: [PATCH] Implement filter --- System/File/Local/Directory.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/System/File/Local/Directory.php b/System/File/Local/Directory.php index 11e08dd06..9a4249fef 100644 --- a/System/File/Local/Directory.php +++ b/System/File/Local/Directory.php @@ -81,12 +81,17 @@ class Directory extends FileAbstract implements DirectoryInterface throw new PathException($path); } - $list = []; - $path = rtrim($path, '\\/'); - - foreach ($iterator = new \RecursiveIteratorIterator( + $list = []; + $path = rtrim($path, '\\/'); + $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), - \RecursiveIteratorIterator::SELF_FIRST) as $item + \RecursiveIteratorIterator::SELF_FIRST); + + if ($filter !== '*') { + return \RegexIterator($iterator, '/' . $filter . '/i', \RecursiveRegexIterator::GET_MATCH); + } + + foreach ($iterator as $item ) { $list[] = str_replace('\\', '/', $iterator->getSubPathname()); }