List dirs in dir ZONDER files

Status
Niet open voor verdere reacties.

RMS123

Gebruiker
Lid geworden
15 nov 2009
Berichten
873
Hallo,

Eerder gebruikte ik altijd deze code om een directory uit te lezen, alleen wil ik nu een lijst met directories in de folder ./files/ ZONDER files en ZONDER subdirectories, hoe moet ik dit dan wijzigen?

Ik zat te denken aan "$file == '.' || $file == '..' || $file == 'index.htm' || $file == 'list.php'" te veranderen naar: "is_dir($file) == false" maar dat werkt niet, en dan krijg ik alsnog de subdirs...

Kan iemand mij helpen?

PHP:
function listdir($dir='./files/') { 
				    if (!is_dir($dir)) { 
				        return false; 
				    } 
				    
				    $files = array(); 
				    listdiraux($dir, $files); 
				
				    return $files; 
			} 
			
			function listdiraux($dir, &$files) { 
			    $handle = opendir($dir); 
			    while (($file = readdir($handle)) !== false) { 
			        if ($file == '.' || $file == '..' || $file == 'index.htm' || $file == 'list.php') { 
			            continue; 
			        } 
			        $filepath = $dir == './files/' ? $file : $dir . '/' . $file; 
			        if (is_link($filepath)) 
			            continue; 
			        if (is_file($filepath)) 
			            $files[] = $filepath; 
			        else if (is_dir($filepath)) 
			            listdiraux($filepath, $files); 
			    } 
			    closedir($handle);
			} 
			
			$files = listdir('.'); 
			sort($files, SORT_LOCALE_STRING); 
			
			foreach ($files as $f) {
				echo  "$f"; 
			}

Edit:
Voor de duidelijkheid:
Ik moet dus een lijst met dirs hebben die in de map files staan. en de subdirs in die mappen wil ik niet zien, hoe doe ik dat?
 
Laatst bewerkt:
deze functie returned een array met folders in een dir
PHP:
   public function get_folders($path = './images/')
    {
        
        $folders = array();
        $results = scandir($path);
        
        foreach ($results as $result) {
            if ($result === '.' or $result === '..') continue;
        
            if (is_dir($path . '/' . $result)) {
                //code to use if directory
                $folders[] = $result;
            }
        }
        if(!is_array($folders))
        {
            $folders = "Er zijn nog geen foto's";
        }
        return $folders;
    }//end get_folders

het maak verder niet uit of er nog andere bestanden in de dir staan.
er wordt alleen gezocht naar folders op dit niveau. Er wordt niet in diepere mappen gekeken.
 
Bedankt!

Ok, zal het binnenkort gaan uitproberen, want ik ben nu bezig met wat oude stoomlocomotieven (oude PC's) aan het amoveren en samenvoegen etc... :p

Topic gaat op opgelost, maar als het niet lukt hoor je nog van me :D
 
Is opgelost. Ik heb nog wel een ander klein vraagje:
ik heb een map met daarin een aantal soorten files, ik wil in de lijst alleen de *.htm files hebben.

Code:
        $path = '.';
        $results = scandir($path);
        foreach ($results as $result) {
            if ($result == *.php) { // dit moet natuurlijk anders worden, maar wat???
		  echo '<option value="'.$result.'">'.substr($result, 3).'</option>'; // substr in om het getal ervoor weg te halen :)
            }
        }
 
ooh miss. gewoon met endswith :p

EDIT:
Code:
$path = '.';
        $results = scandir($path);
        foreach ($results as $result) {
            if (endsWith($result, '.htm') == 'true') {
		         echo '<option value="'.$result.'">'.substr($result, 3).'</option>';
            }
        }

dit werkt niet :(
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan