Que tal
Masterphp,
Si dispones de php 5.1+ podrias utilizar
FilterIterator, te dejo un ejemplo de una clase básica.
Código PHP:
Ver originalclass CustomFileIterator extends FilterIterator
{
/**
* @var string
*/
protected $_pattern;
/**
* CustomFileIterator constructor
*
* @param string|DirectoryIterator $dirOrIterator
* @return void
* @throws InvalidArgumentException
*/
public function __construct($pattern, $dirOrIterator = '.')
{
if (!is_dir($dirOrIterator)) { throw new InvalidArgumentException('Expected a valid directory name');
}
$dirOrIterator = new RecursiveDirectoryIterator($dirOrIterator);
}
if (!$dirOrIterator instanceof DirectoryIterator) {
throw new InvalidArgumentException('Expected a DirectoryIterator');
}
if ($dirOrIterator instanceof RecursiveIterator) {
$iterator = new RecursiveIteratorIterator($dirOrIterator);
} else {
$iterator = $dirOrIterator;
}
parent::__construct($iterator);
$this->_pattern = $pattern;
}
/**
* @return boolean
*/
public function accept()
{
$file = $this->getInnerIterator()->current();
if (!$file instanceof \SplFileInfo
|| !$file->isFile()
) {
return false;
}
if ($file->getBasename('.php') == $file->getBasename()) {
return false;
}
return preg_match($this->_pattern
, $file->getFilename()); }
}
y para utilizarla:
Código PHP:
Ver originaltry {
$it = new CustomFileIterator('/^block_/', '/path/to/directory');
foreach($it as $file){
echo $file->getFilename() . PHP_EOL;
}
} catch(InvalidArgumentException $e) {
echo $e->getMessage() . PHP_EOL;
}
Saludos.