1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class ExcludeFolderFilter extends FilterIterator{
private $userFilter;
public function __construct(Iterator $iterator , $filter ){
parent::__construct($iterator);
$this->userFilter = $filter;
}
public function accept(){
$folder = $this->getInnerIterator()->current();
// Création de la REGEX à partir du tableau d'exclusion des dossiers
$regex_text = str_replace('/', '\/', implode('|',$this->userFilter));
$regex_text = str_replace('.', '\.', $regex_text);
//echo "<br/>REGEXP :" . $regex_text . "<br/>";
$regex = '/^(?:' . $regex_text . ')(.*)$/';
if (preg_match($regex, $folder->getPath())){
return false;
}else{
return true;
}
}
}
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::KEY_AS_FILENAME)
, RecursiveIteratorIterator::SELF_FIRST);
$iterator = new ExcludeFolderFilter($iter, $exclusion_array);
$phar->buildFromIterator($iterator, $root); |
Partager