2011-12-16 20 views
21

संभव डुप्लिकेट:
PHP list of specific files in a directory
use php scandir($dir) and get only images!सबसे अच्छा तरीका है

तो अभी मैं एक निर्देशिका है और मैं एक हो रही है फाइलों की सूची

$dir_f = "whatever/random/"; 
$files = scandir($dir_f); 

, हालांकि, निर्देशिका में प्रत्येक फ़ाइल को पुनर्प्राप्त करता है। मैं केवल एक निश्चित एक्सटेंशन के साथ फ़ाइलों को पुनः प्राप्त कैसे करूं जैसे कि .ini सबसे कुशल तरीके से।

+5

एक दर्जन सवाल की तरह नहीं है का उपयोग करते हुए वही पूछना [कृपया प्रश्न पूछने से पहले अनुसंधान करें।] (Http://stackoverflow.com/questions/ask-advice) – Gordon

+0

['स्कैंडर'] (http://php.net/manual/en/function.scandir.php) का उपयोग करें –

+0

'// $ निर्देशिका =" ../ file/";' '// // .text एक्सटेंशन के साथ सभी छवि फ़ाइलों को प्राप्त करने के लिए निर्देशिका के लिए पथ। '$ छवियां = ग्लोब ($ निर्देशिका।" * ।पाठ ");' '// प्रिंट प्रत्येक फ़ाइल name' ' foreach ($ $ छवि) '' { '' गूंज $ छवि; '' } के रूप में छवियों() –

उत्तर

48

पीएचपी आप केवल वही फ़ाइलें आप की जरूरत पर कब्जा करने में मदद करने के लिए एक महान कार्य है। इसके बुलाया glob()

ग्लोब -

$files = array(); 
foreach (glob("/path/to/folder/*.txt") as $file) { 
    $files[] = $file; 
} 

संदर्भ - -

  • glob()
  • 0 एक पैटर्न

यहाँ मिलान pathnames का पता लगाएं एक उदाहरण उपयोग है

+4

कृपया स्पष्ट डुप्लिकेट का उत्तर न दें लेकिन उन्हें बंद करें। धन्यवाद। – Gordon

+5

@gor - मुझे [डुपी] (http://stackoverflow.com/questions/1646099/scan-current-folder-using-php) के रूप में बंद करने के लिए केवल मेरे वोट से अधिक की आवश्यकता है ... – Lix

8

PHP का glob() फ़ंक्शन चलो आप खोजने के लिए एक पैटर्न निर्दिष्ट करते हैं।

$files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f)); 

हालांकि glob एक ऐसी ही अतिरिक्त वाक्यविन्यास है:

9

यदि आप चाहते हैं एक से अधिक एक्सटेंशन खोजा गया, तो preg_grep() छानने के लिए एक विकल्प है। यदि आपके पास और शर्तें हैं, तो यह अधिकतर समझ में आता है, ~i केस-असंवेदनशील के लिए ध्वज जोड़ें, या संयुक्त सूचियों को फ़िल्टर कर सकते हैं।

+2

'ग्लोब ("{$ dir} *। {jpg, jpeg, gif, ico, png}", GLOB_BRACE)'। यह काम करेगा कई एक्सटेंशन के लिए अच्छी तरह से। –

+0

यह उत्तर मेरे लिए बेहद सहायक था! मैं सैकड़ों विभिन्न फ़ाइल पहचानकर्ताओं और फ़ाइलों को सैकड़ों हजारों फाइलों के साथ एक फ़ोल्डर में खोजने की कोशिश कर रहा था। ग्लोब इतनी बड़ी खोज स्ट्रिंग को संभाल नहीं सकता था, और अगर मैं छोटे तारों और लूप में टूट गया डी में कई मिनट लग गए। स्कैंडर के साथ preg_grep का उपयोग करने में लगभग 5 सेकंड लगते हैं! –

0

कोशिश इस

//path to directory to scan 
$directory = "../file/"; 

//get all image files with a .txt extension. 
$file= glob($directory . "*.txt "); 

//print each file name 
foreach($file as $filew) 
{ 
echo $filew; 
$files[] = $filew; // to create the array 

} 
+0

मुझे कोई नहीं पता '.text' एक्सटेंशन वाली फ़ाइलें। –

+1

@MadaraUchiha क्षमा करें यह एक टाइपो था –

0

regex लेकिन कुछ इस तरह का परीक्षण नहीं किया:

if ($handle = opendir('/file/path')) { 

    while (false !== ($entry = readdir($handle))) { 
     if (preg_match('/\.txt$/', $entry)) { 
      echo "$entry\n"; 
     } 
    } 

    closedir($handle); 
} 
5

आप कोशिश कर सकते हैं GlobIterator

$iterator = new \GlobIterator(__DIR__ . '/*.txt', FilesystemIterator::KEY_AS_FILENAME); 
$array = iterator_to_array($iterator); 
var_dump($array) 
संबंधित मुद्दे