Web lists-archives.com

Re: [PHP] Skipping files in a RecursiveDirectoryIterator loop




Although I have many years of experience with other languages I don't have much experience with PHP. Based on what I know about programming in general, your general algorithm I say it is good.

Also see Find all .php files in folder recursively - Stack Overflow <https://stackoverflow.com/questions/15054997/find-all-php-files-in-folder-recursively> for other possibilities. The following works for me for the current directory of the script. Evidently RecursiveDirectoryIterator can skip the dot directories simply by specifying the option.

$di = new RecursiveDirectoryIterator(__DIR__,RecursiveDirectoryIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($di);
foreach($it as $file) {
    echo $file, '<br>', PHP_EOL;
    }

Also, I would probably do it iteratively, not recursively, but I don't know any good reason to do that except I know how to do it, at least in C#.

Jennifer <mailto:jennifer@xxxxxxxxxxxxxxxxxxxx>
Sunday, November 19, 2017 2:20 PM
I want to iterate over every file in a particular directory, and all it's sub-directories. I'm using the code below and it works fine, but I'd like to know if I've done this properly, or if there's a better way to skip certain files and directories.

Thanks,
Jenni



$rdi = new RecursiveDirectoryIterator($lists);

foreach (new RecursiveIteratorIterator($rdi) as $file) {

// To skip the . and .. directories
if (substr($file->getFilename(), -1) == '.') { continue; }

// To skip any files that begin with --
if (substr($file->getFilename(), 0, 2) == '--') { continue; }

// To skip any directories that begin with --
if (substr($rdi, 0, 2) == '--') { continue; }

// process files...
}