Consider working with SPL's fileinfo and iterator classes (i.e. SplFileInfo
, DirectoryIterator
and FilterIterator
, CallbackFilterIterator
, etc) to build something a little more resilient.
Example:
$directoryIterator// =your newfilter DirectoryIterator($directoryPath);logic
$imageFilter = function (SplFileInfo $splFileInfo) {
return preg_match(
'/^screenshot[0-9]{1,3}\.png$/',
$splFileInfo->getFilename()
) ? true : false;
}
// get files in directory based on filter function
try {
$directoryIterator = new DirectoryIterator($directoryPath);
$filteredImageIterator = new CallbackFilterIterator(
$directoryIterator,
$imageFilter
);
} catch (Exception $e) {
// do something here, or don't wrap in try-catch at all if you want to bubble up exception.
}
foreach($filteredImageIterator as $image) { /* your code */ }
Note that you can build upon the filter shown here by adding things like verifying file is readable/writable, get file modification timestamps, or other such functionality exposed by SplFileInfo
, which could include ability to easily create SplFileObject
for working with file contents.