2017-09-10 1 views
1

Ich verwende diese Funktion, um Dateien aus Verzeichnis und Unterverzeichnisse zu retreive. Wie kann ich nur Dateien mit _lang.php in diesem Verzeichnis und in Unterverzeichnissen anzeigen?Retreiving-Dateien basierend auf einem bestimmten Muster

function getDirContents($dir, &$results = array()){ 
    $files = scandir($dir); 

    foreach($files as $key => $value){ 
     $path = realpath($dir.DIRECTORY_SEPARATOR.$value); 
     if(!is_dir($path)) { 
      $results[] = $path; 
     } else if($value != "." && $value != "..") { 
      getDirContents($path, $results); 
      $results[] = $path; 
     } 
    } 

    return $results; 
} 
$dir = './test/'; 
var_dump(getDirContents($dir)); 
+0

[glob()] (http://php.net/manual/en/function.glob.php) ist die Funktion für Sie – rtfm

Antwort

2

eine Frage wie diese earlier beantwortet, versuchen Iterator Klassen mit

<?php 
function getDirContents($directory, $pattern) 
{ 
    $result = array(); 
    $objRecursiveDirectoryIterator = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); 
    $objRecursiveIteratorIterator = new RecursiveIteratorIterator($objRecursiveDirectoryIterator); 
    // use RegexIterator() to grab only files that match $pattern 
    $objRegexIterator = new RegexIterator($objRecursiveIteratorIterator, $pattern, RecursiveRegexIterator::GET_MATCH); 

    // iterate through all the results 
    foreach ($objRegexIterator as $arrMatches) { 
     $result[] = $arrMatches[0]; 
    } 
    return $result; 
} 

$dir = './test/'; 
$arrDirContents = getDirContents($dir, "~^.+_lang\.php$~i"); 
var_dump($arrDirContents); 
Verwandte Themen