दिलचस्प पोस्ट
क्या Linq गणना () सूची या सूची से तेज या धीमी है। पंक्ति या अर्रे? लंबाई? 1 डी या 2 डी सरणी, क्या तेज़ है? मैं एक धागा कैसे मार सकता हूं? स्टॉप () का उपयोग किए बिना; आईओएस गेम केंद्र: सैंडबॉक्स में लीडरबोर्ड पर स्कोर नहीं दिखा रहा है वास्तव में विराम की समस्या क्या है? एक्सएसएलटी: एक्सएमएल फाइलों को मर्ज करने का एक आसान तरीका क्रोम के साथ विशिष्ट फाइल सिस्टम स्टोरेज स्टोर कहां से आता है? विजुअल स्टूडियो 2012 वेब प्रकाशित फाइल कॉपी नहीं करता है ओरेकल पर AUTO_INCREMENT के साथ आईडी कैसे बनाऊँ? इंटरनेट एक्सप्लोरर का समर्थन पुशस्टेट और प्रतिस्थापित करता है? वैज्ञानिक संकेतन के बिना स्ट्रिंग रूपांतरण के लिए डबल जावा कुंजी स्टोर में पीईएम आयात करें चैनल पर सभी वीडियो लाने के लिए यूट्यूब एपीआई मैं jQuery UI संवाद पर एक बटन कैसे अक्षम कर सकता हूं? मैं पर्ल में एक सरणी से डुप्लिकेट आइटम कैसे निकालूं?

सभी फ़ोल्डर सबफ़ोल्डर और फ़ाइलों को एक निर्देशिका में php का उपयोग करना

कृपया php का उपयोग करके सभी फ़ोल्डर्स, सबफ़ोल्डर, फाइल्स को निर्देशिका में डालने के लिए मुझे एक समाधान दें। मेरा फ़ोल्डर संरचना इस तरह है:

Main Dir Dir1 SubDir1 File1 File2 SubDir2 File3 File4 Dir2 SubDir3 File5 File6 SubDir4 File7 File8 

मैं प्रत्येक फ़ोल्डर में सभी फाइलों की सूची प्राप्त करना चाहता हूं।

Php में कोई शैल स्क्रिप्ट आदेश है?

वेब के समाधान से एकत्रित समाधान "सभी फ़ोल्डर सबफ़ोल्डर और फ़ाइलों को एक निर्देशिका में php का उपयोग करना"

 function listFolderFiles($dir){ $ffs = scandir($dir); unset($ffs[array_search('.', $ffs, true)]); unset($ffs[array_search('..', $ffs, true)]); // prevent empty ordered elements if (count($ffs) < 1) return; echo '<ol>'; foreach($ffs as $ff){ echo '<li>'.$ff; if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff); echo '</li>'; } echo '</ol>'; } listFolderFiles('Main Dir'); 

यह कोड एक ट्री व्यू में क्रमबद्ध क्रम में सभी निर्देशिकाओं और फ़ाइलों को सूचीबद्ध करता है यह सभी साइट संसाधनों के हाइपर-लिंक वाले एक साइट मैप जनरेटर है। पूरे वेब पेज का स्रोत यहां है। आपको अंत से नौवीं पंक्ति पर पथ बदलने की आवश्यकता होगी।

 <?php $pathLen = 0; function prePad($level) { $ss = ""; for ($ii = 0; $ii < $level; $ii++) { $ss = $ss . "|&nbsp;&nbsp;"; } return $ss; } function myScanDir($dir, $level, $rootLen) { global $pathLen; if ($handle = opendir($dir)) { $allFiles = array(); while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { if (is_dir($dir . "/" . $entry)) { $allFiles[] = "D: " . $dir . "/" . $entry; } else { $allFiles[] = "F: " . $dir . "/" . $entry; } } } closedir($handle); natsort($allFiles); foreach($allFiles as $value) { $displayName = substr($value, $rootLen + 4); $fileName = substr($value, 3); $linkName = str_replace(" ", "%20", substr($value, $pathLen + 3)); if (is_dir($fileName)) { echo prePad($level) . $linkName . "<br>\n"; myScanDir($fileName, $level + 1, strlen($fileName)); } else { echo prePad($level) . "<a href=\"" . $linkName . "\" style=\"text-decoration:none;\">" . $displayName . "</a><br>\n"; } } } } ?><!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title>Site Map</title> </head> <body> <h1>Site Map</h1> <p style="font-family:'Courier New', Courier, monospace; font-size:small;"> <?php $root = '/home/someuser/www/website.com/public'; $pathLen = strlen($root); myScanDir($root, 0, strlen($root)); ?> </p> </body> </html> 

यदि आप directoryIterator का उपयोग करना चाहते हैं

निम्नलिखित फ़ंक्शन directoryIterator साथ @ शेफ़ का उत्तर फिर से लागू करना है

 function listFolderFiles($dir) { echo '<ol>'; foreach (new DirectoryIterator($dir) as $fileInfo) { if (!$fileInfo->isDot()) { echo '<li>' . $fileInfo->getFilename(); if ($fileInfo->isDir()) { listFolderFiles($fileInfo->getPathname()); } echo '</li>'; } } echo '</ol>'; } listFolderFiles('Main Dir'); 

फ़ोल्डर संरचना दिखाने का एक बहुत ही आसान तरीका RecursiveTreeIterator क्लास (PHP 5> = 5.3.0, PHP 7) का उपयोग करता है और एक एएससीआईआई ग्राफिक ट्री उत्पन्न करता है।

 $it = new RecursiveTreeIterator(new RecursiveDirectoryIterator("/path/to/dir", RecursiveDirectoryIterator::SKIP_DOTS)); foreach($it as $path) { echo $path."<br>"; } 

http://php.net/manual/en/class.recursivetreeiterator.php

उदाहरण के लिए $it->setPrefixPart(RecursiveTreeIterator::PREFIX_LEFT, "|"); उदाहरण के लिए, RecursiveTreeIterator::setPrefixPart का उपयोग करते हुए उपसर्गों को बदलकर पेड़ के ASCII प्रतिनिधित्व पर कुछ नियंत्रण भी है $it->setPrefixPart(RecursiveTreeIterator::PREFIX_LEFT, "|");

मैं सचमुच एसपीएल पुस्तकालय के शौकीन हूं, वे पुनरावृत्त डायरेक्टरी इटरेटर सहित, इटरेटर की पेशकश करते हैं।

ग्लोब () या रिकर्सिव डायरेक्टरी इटरेटर पर नजर डालें।

यह निर्देशिका प्रारूप में मेनू बार बनाने के लिए उपयोग करेगा

 $pathLen = 0; function prePad($level) { $ss = ""; for ($ii = 0; $ii < $level; $ii++) { $ss = $ss . "|&nbsp;&nbsp;"; } return $ss; } function myScanDir($dir, $level, $rootLen) { global $pathLen; if ($handle = opendir($dir)) { $allFiles = array(); while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { if (is_dir($dir . "/" . $entry)) { $allFiles[] = "D: " . $dir . "/" . $entry; } else { $allFiles[] = "F: " . $dir . "/" . $entry; } } } closedir($handle); natsort($allFiles); foreach($allFiles as $value) { $displayName = substr($value, $rootLen + 4); $fileName = substr($value, 3); $linkName = str_replace(" ", " ", substr($value, $pathLen + 3)); if (is_dir($fileName)) { echo "<li ><a class='dropdown'><span>" . $displayName . " </span></a><ul>"; myScanDir($fileName, $level + 1, strlen($fileName)); echo "</ul></li>"; } else { $newstring = substr($displayName, -3); if($newstring == "PDF" || $newstring == "pdf" ) echo "<li ><a href=\"" . $linkName . "\" style=\"text-decoration:none;\">" . $displayName . "</a></li>"; } $t; if($level != 0) { if($level < $t) { $r = int($t) - int($level); for($i=0;$i<$r;$i++) { echo "</ul></li>"; } } } $t = $level; } } } ?> <li style="color: #ffffff"> <?php // ListFolder('D:\PDF'); $root = 'D:\PDF'; $pathLen = strlen($root); myScanDir($root, 0, strlen($root)); ?> </li> 

आप यह भी कोशिश कर सकते हैं:

 <?php function listdirs($dir) { static $alldirs = array(); $dirs = glob($dir . '/*', GLOB_ONLYDIR); if (count($dirs) > 0) { foreach ($dirs as $d) $alldirs[] = $d; } foreach ($dirs as $dir) listdirs($dir); return $alldirs; } $directory_list = listdirs('xampp'); print_r($directory_list); ?> 
 define ('PATH', $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF'])); $dir = new DirectoryIterator(PATH); echo '<ul>'; foreach ($dir as $fileinfo) { if (!$fileinfo->isDot()) { echo '<li><a href="'.$fileinfo->getFilename().'" target="_blank">'.$fileinfo->getFilename().'</a></li>'; echo '</li>'; } } echo '</ul>'; 

शो के लिए देर हो चुकी है, लेकिन स्वीकृत उत्तर के निर्माण के लिए …

यदि आप सभी फाइलों और निर्देशिकाओं को सरणी के रूप में रखना चाहते हैं (जो जावास्क्रिप्ट में JSON.stringify के साथ अच्छी तरह से सुंदर हो सकते हैं), तो आप फ़ंक्शन को निम्न में बदल सकते हैं:

 function listFolderFiles($dir) { $arr = array(); $ffs = scandir($dir); foreach($ffs as $ff) { if($ff != '.' && $ff != '..') { $arr[$ff] = array(); if(is_dir($dir.'/'.$ff)) { $arr[$ff] = listFolderFiles($dir.'/'.$ff); } } } return $arr; } 

न्यूज़ के लिए …

उपरोक्त JSON.stringify उपयोग करने के लिए, आपके JS / jQuery कुछ ऐसा होगा:

 var ajax = $.ajax({ method: 'POST', data: {list_dirs: true} }).done(function(msg) { $('pre').html( 'FILE LAYOUT<br/>' + JSON.stringify(JSON.parse(msg), null, 4) ); }); 

^ यह मानते हुए कि आपके पास HTML में <pre> तत्व कहीं न कहीं है। AJAX का कोई भी स्वाद होगा, लेकिन मैं समझता हूं कि ज्यादातर लोग ऊपर दिए गए jQuery के जैसा कुछ भी उपयोग कर रहे हैं।

और साथ में PHP:

 if(isset($_POST['list_dirs'])) { echo json_encode(listFolderFiles($rootPath)); exit(); } 

जहां आपके पास पहले से ही listFolderFiles

मेरे मामले में, मैंने अपने $rootPath को साइट की रूट डायरेक्टरी में सेट किया है …

 $rootPath; if(!isset($rootPath)) { $rootPath = $_SERVER['DOCUMENT_ROOT']; } 

अंतिम परिणाम कुछ ऐसा है …

 | some_file_1487.smthng [] | some_file_8752.smthng [] | CSS | | some_file_3615.smthng [] | | some_file_8151.smthng [] | | some_file_7571.smthng [] | | some_file_5641.smthng [] | | some_file_7305.smthng [] | | some_file_9527.smthng [] | | IMAGES | | some_file_4515.smthng [] | | some_file_1335.smthng [] | | some_file_1819.smthng [] | | some_file_9188.smthng [] | | some_file_4760.smthng [] | | some_file_7347.smthng [] | | JSScripts | | some_file_6449.smthng [] | | some_file_7864.smthng [] | | some_file_3899.smthng [] | | google-code-prettify | | | some_file_2090.smthng [] | | | some_file_5169.smthng [] | | | some_file_3426.smthng [] | | | some_file_8208.smthng [] | | | some_file_7581.smthng [] | | | some_file_4618.smthng [] | | | | some_file_3883.smthng [] | | some_file_3713.smthng [] ... and so on... 

नोट: आपका ऐसा बिल्कुल ठीक नहीं JSON.stringify मैंने JSON.stringify को संशोधित किया है। टैब (ऊर्ध्वाधर पाइप) को प्रदर्शित करने के लिए JSON.stringify करें, सभी कुंजी वाले मानों को संरेखित करें, कुंजियों को बंद करने, और कुछ अन्य चीजों को हटा दें अगर मैं कभी इसे अपलोड करने या पर्याप्त रुचि प्राप्त करने के लिए मिलता है तो मैं इस जवाब को एक लिंक के साथ संशोधित करूंगा।

 function GetDir($dir) { if(is_dir($dir)) { if($kami= opendir($dir)){ while($file = readdir($kami)){ if($file != '.' && $file != '..'){ if(is_dir($dir . $file)){ echo $dir . $file; // since it is a directory we recurse it. GetDir($dir . $file . '/'); }else{ echo $dir . $file; } } } } closedir($kami); } 

}

यदि आप पुनरावर्ती निर्देशिका सूची समाधान की तलाश कर रहे हैं और उन्हें बहुआयामी सरणी में व्यवस्थित कर रहे हैं नीचे कोड का उपयोग करें:

 <?php /** * Function for recursive directory file list search as an array. * * @param mixed $dir Main Directory Path. * * @return array */ function listFolderFiles($dir) { $fileInfo = scandir($dir); $allFileLists = []; foreach ($fileInfo as $folder) { if ($folder !== '.' && $folder !== '..') { if (is_dir($dir . DIRECTORY_SEPARATOR . $folder) === true) { $allFileLists[$folder] = listFolderFiles($dir . DIRECTORY_SEPARATOR . $folder); } else { $allFileLists[$folder] = $folder; } } } return $allFileLists; }//end listFolderFiles() $dir = listFolderFiles('your searching directory path ex:-F:\xampp\htdocs\abc'); echo '<pre>'; print_r($dir); echo '</pre>' ?> 

यहां scandir और array_filter साथ एक सरल कार्य है जो काम करते हैं। regex का उपयोग करके आवश्यक फाइलें फ़िल्टर करें मैंने हटाया .. और .htaccess जैसी छिपी हुई फ़ाइलें, आप <ul> और रंगों का उपयोग कर आउटपुट को भी कस्टमाइज़ कर सकते हैं और कोई भी स्कैन या खाली डायर के मामले में त्रुटियों को भी अनुकूलित नहीं कर सकते हैं!

 function getAllContentOfLocation($loc) { $scandir = scandir($loc); $scandir = array_filter($scandir, function($element){ return !preg_match('/^\./', $element); }); if(empty($scandir)) echo '<li style="color:red">Empty Dir</li>'; foreach($scandir as $file){ $baseLink = $loc . DIRECTORY_SEPARATOR . $file; echo '<ol>'; if(is_dir($baseLink)) { echo '<li style="font-weight:bold;color:blue">'.$file.'</li>'; getAllContentOfLocation($baseLink); }else{ echo '<li>'.$file.'</li>'; } echo '</ol>'; } } //Call function and set location that you want to scan getAllContentOfLocation('../app');