एक CodeIgniter प्रेमी होने के नाते, मैं वास्तव में कोर संशोधित है directory_helper कि से गहराई को स्थापित करने और छुपा फाइलों को चुनने के अलावा चुनने के अलावा कुछ फ़ाइलों को स्कैनिंग से मुक्त करने की क्षमता शामिल करने के लिए।
सभी क्रेडिट सीआई के मूल लेखकों के पास जाता है। मैंने इसे में सॉर्टिंग सरणी और सॉर्टिंग में बिल्डिंग के साथ जोड़ा।
यह फ़ोल्डर को ऑर्डर करने के लिए ksort का उपयोग करता है, क्योंकि प्रत्येक फ़ोल्डर के अंदर फ़ाइलों को ऑर्डर करने के लिए फ़ोल्डर नाम कुंजी और natsort के रूप में सेट किया जाता है।
केवल एक चीज जो आपको करने की आवश्यकता हो सकती है, यह परिभाषित करता है कि DIRECTORY_SEPARATOR आपके पर्यावरण के लिए क्या है लेकिन मुझे नहीं लगता कि आपको और भी संशोधित करने की आवश्यकता होगी।
function directory_map($source_dir, $directory_depth = 0, $hidden = FALSE, $exempt = array())
{
if ($fp = @opendir($source_dir))
{
$folddata = array();
$filedata = array();
$new_depth = $directory_depth - 1;
$source_dir = rtrim($source_dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
while (FALSE !== ($file = readdir($fp)))
{
// Remove '.', '..', and hidden files [optional]
if ($file === '.' OR $file === '..' OR ($hidden === FALSE && $file[0] === '.'))
{
continue;
}
is_dir($source_dir.$file) && $file .= DIRECTORY_SEPARATOR;
if (($directory_depth < 1 OR $new_depth > 0) && is_dir($source_dir.$file))
{
$folddata[$file] = directory_map($source_dir.$file, $new_depth, $hidden, $exempt);
}
elseif(empty($exempt) || !empty($exempt) && !in_array($file, $exempt))
{
$filedata[] = $file;
}
}
!empty($folddata) ? ksort($folddata) : false;
!empty($filedata) ? natsort($filedata) : false;
closedir($fp);
return array_merge($folddata, $filedata);
}
return FALSE;
}
प्रयोग उदाहरण होगा:
$filelist = directory_map('full_server_path');
ऊपर उल्लेख किया है, यह बच्चे सरणी के लिए कुंजी के रूप में फ़ोल्डर नाम सेट हो जाएगा, तो आप निम्नलिखित की तर्ज पर कुछ उम्मीद कर सकते हैं:
Array(
[documents/] => Array(
[0] => 'document_a.pdf',
[1] => 'document_b.pdf'
),
[images/] => Array(
[tn/] = Array(
[0] => 'picture_a.jpg',
[1] => 'picture_b.jpg'
),
[0] => 'picture_a.jpg',
[1] => 'picture_b.jpg'
),
[0] => 'file_a.jpg',
[1] => 'file_b.jpg'
);
बस ध्यान रखें कि छूट सभी फ़ोल्डर्स पर लागू की जाएगी। यह आसान है अगर आप index.html फ़ाइल या अन्य फ़ाइल को छोड़ना चाहते हैं जो उन निर्देशिकाओं में उपयोग किया जाता है जिन्हें आप शामिल नहीं करना चाहते हैं।
पहले उन्हें दो सरणी में सहेजें और फिर उन्हें प्रिंट करें (फ़ोल्डर पहले और फिर फ़ाइलें) :) –
आपका मतलब है कि मुझे दो "foreach" बनाना है? फ़ोल्डर के लिए और फिर फ़ाइलों के लिए? – Ogy