রেগুলার এক্সপ্রেশন
$directory = new RecursiveDirectoryIterator(__DIR__); $flattened = new RecursiveIteratorIterator($directory); // পাথ ".Trash*" ফোল্ডার না থাকা এবং .php বা .html ফাইল দিয়ে শেষ হওয়া নিশ্চিত করুন $files = new RegexIterator($flattened, '#^(?:[A-Z]:)?(?:/(?!\.Trash)[^/]+)+/[^/]+\.(?:php|html)$#Di'); foreach($files as $file) { echo $file . PHP_EOL; }ফিল্টার ব্যবহার
একটি বেস ক্লাস রেগেক্স ধারণ করে যা ফিল্টারের সাথে ব্যবহার করা হয়।
এই ক্লাসকে এক্সটেন্ড করা ক্লাসগুলো। RecursiveRegexIterator এক্সটেন্ড করা হয়েছে।
abstract class FilesystemRegexFilter extends RecursiveRegexIterator { protected $regex; public function __construct(RecursiveIterator $it, $regex) { $this->regex = $regex; parent::__construct($it, $regex); } }এগুলো বেসিক ফিল্টার এবং ফাইল ও ডিরেক্টরি নাম অনুযায়ী কাজ করে।
class FilenameFilter extends FilesystemRegexFilter { // রেগেক্স সাহায্যে ফাইল ফিল্টার public function accept() { return ( ! $this->isFile() || preg_match($this->regex, $this->getFilename())); } } class DirnameFilter extends FilesystemRegexFilter { // রেগেক্স সাহায্যে ডিরেক্টরি ফিল্টার public function accept() { return ( ! $this->isDir() || preg_match($this->regex, $this->getFilename())); } }নিচের কোড ডিরেক্টরি কন্টেন্টস রিকার্সিভলি এরিয়েট করে। ট্রাশ ফোল্ডার ফিল্টার আউট করা হয়েছে এবং শুধু PHP এবং HTML ফাইল রিটেইন করা হয়েছে।
$directory = new RecursiveDirectoryIterator(__DIR__); // ".Trash*" ফোল্ডার ফিল্টার আউট $filter = new DirnameFilter($directory, '/^(?!\.Trash)/'); // PHP/HTML ফাইল ফিল্টার $filter = new FilenameFilter($filter, '/\.(?:php|html)$/'); foreach(new RecursiveIteratorIterator($filter) as $file) { echo $file . PHP_EOL; }উপরোক্ত কোড ব্যবহার করে ২ লেভেল ডিপ স্ক্যানিং
$files = new RecursiveIteratorIterator($filter); $files->setMaxDepth(1); // দুটি লেভেল, প্যারামিটার জিরো-বেসড। foreach($files as $file) { echo $file . PHP_EOL; }