ग्लोब के साथ PHP में एकाधिक सबफ़ोल्डर्स को स्कैन करना
PHP में, ग्लोब फ़ंक्शन का उपयोग एक निर्दिष्ट निर्देशिका के भीतर फ़ाइलों को खोजने के लिए किया जा सकता है। हालाँकि, कई उपनिर्देशिकाओं और उप-उपनिर्देशिकाओं में खोज करते समय, अतिरिक्त विचार आवश्यक हैं।
ग्लोब के साथ पुनरावर्ती खोज
एक दृष्टिकोण ग्लोब की पुनरावर्ती क्षमताओं को नियोजित करना है। यहां एक फ़ंक्शन है जो निर्दिष्ट फ़ाइल पैटर्न के लिए पुनरावर्ती खोज करता है:
function rglob($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { $files = array_merge( [], ...[$files, rglob($dir . "/" . basename($pattern), $flags)] ); } return $files; }
इस फ़ंक्शन का उपयोग करने के लिए, बस रूट निर्देशिका और फ़ाइल पैटर्न को तर्क के रूप में प्रदान करें:
$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip'); var_dump($result);
RecursiveDirectoryIterator के साथ वैकल्पिक दृष्टिकोण
एक अन्य विकल्प RecursiveDirectoryIterator वर्ग का उपयोग करना है। यहां एक फ़ंक्शन है जो निर्दिष्ट फ़ाइल पैटर्न के लिए पुनरावर्ती रूप से खोज करने के लिए इस वर्ग का लाभ उठाता है:
function rsearch($folder, $regPattern) { $dir = new RecursiveDirectoryIterator($folder); $ite = new RecursiveIteratorIterator($dir); $files = new RegexIterator($ite, $regPattern, RegexIterator::GET_MATCH); $fileList = array(); foreach($files as $file) { $fileList = array_merge($fileList, $file); } return $fileList; }
इस फ़ंक्शन को शुरू करने के लिए:
$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/')); var_dump($result);
ग्लोब और RecursiveDirectoryIterator दोनों एकाधिक उपनिर्देशिकाओं के भीतर फ़ाइलों को पुनरावर्ती रूप से खोजने के लिए व्यवहार्य समाधान प्रदान करते हैं। उनके बीच का चुनाव आपके आवेदन की विशिष्ट आवश्यकताओं पर निर्भर करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3