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
SystemicPlural
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
BreyndotEchse
source
to share
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
sergio
source
to share
If you want to do it in one line:
$iterator = new RecursiveDirectoryIterator($path_directory, RecursiveDirectoryIterator::SKIP_DOTS);
-1
hugsbrugs
source
to share