How to get RecursiveDirectoryIterator to exclude hidden folders

I have a recursiveDirectoryIterator like this:

$theme_iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($theme_folder_path)
);
foreach ($theme_iterator as $file_object) {
   // Stuff
}

      

The problem is that she's iterating into hidden .svn folders. How can I prevent this?

Edit:

I can't just add something like this to the foreach, because the files from the hidden folder are already in the array at this point, and they are not all hidden.

if (strpos($file_object, ".") ===0) {
    continue;
}

      

+3


source to share


3 answers


<?php
class RecursiveDotFilterIterator extends  RecursiveFilterIterator
{
    public function accept()
    {
        return '.' !== substr($this->current()->getFilename(), 0, 1);
    }
}

$iterator = new RecursiveIteratorIterator(
    new RecursiveDotFilterIterator(
        new RecursiveDirectoryIterator('.')
    )
);
foreach ($iterator as $x) {
    //do stuff
}

      



+4


source


Set flag

RecursiveDirectoryIterator::SKIP_DOTS

to exclude files:



$iterator = new RecursiveDirectoryIterator($theme_folder_path);

$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
    $theme_iterator = new RecursiveIteratorIterator(
       $iterator
);

      

+2


source


If you want to do it in one line:

$iterator = new RecursiveDirectoryIterator($path_directory, RecursiveDirectoryIterator::SKIP_DOTS); 

      

-1


source







All Articles