webForumDet fria alternativet

Lista underkataloger med PHP?

PHP

5 svar · 427 visningar · startad av Dr-man

Medlem sedan juli 2002732 inlägg
Frågan#1

Finns det nån möljighet att lista innehållet i underkataloger med PHP eller går det inte?

Medlem sedan juli 2002732 inlägg
#2

Hur gör jag så man kan få resultat utskrivet på skärmen med hjälp av koden nedanför?

function list_dir($dirname) 
{ 
    if($dirname[strlen($dirname)-1]!='') 
        $dirname.=''; 
    static $result_array=array();  
    $handle=opendir($dirname); 
    while ($file = readdir($handle)) 
    { 
        if($file=='.'||$file=='..') 
            continue; 
        if(is_dir($dirname.$file)) 
            list_dir($dirname.$file.''); 
        else 
            $result_array[]=$dirname.$file; 
    }    
    closedir($handle); 
    return $result_array; 
    
}
Medlem sedan aug. 20021 752 inlägg
#3

Jag är ingen expert på PHP så det här är nog inte det bästa sättet men det fungerar.

<?
function list_dir($dirname)
{
    if($dirname[strlen($dirname)-1]!='')
        $dirname.='';
    static $result_array=array();
    $handle=opendir($dirname);
    while ($file = readdir($handle))
    {
        if($file=='.'||$file=='..')
            continue;
        if(is_dir($dirname.$file))
            list_dir($dirname.$file.'');
        else
            $result_array[]=$dirname.$file;
    }
    closedir($handle);
    return $result_array;

}

$dirs=list_dir("d:/");
$i=0;
while($i<sizeof($dirs))
{
	echo $dirs[$i++];
	echo "<br>";
}
?>

Har även gjort en lite "snyggare" version som lägger till ett prefix framför fil/katalog namnet så man ser vad som är fil och vad som är katalog och som listar alla filer och kataloger i alla under kataloger, dvs hela vägen ner och inte som skriptet ovan som bara listar 1 nivå ner

<?
function list_dir($dirname, $fileprefix)
{
	if($dirname[strlen($dirname)-1]!='')
		$dirname.='';
	static $result_array=array();
	$handle=opendir($dirname);
	while ($file = readdir($handle))
	{
		if($file=='.'||$file=='..')
			continue;
		if(is_dir($dirname.$fileprefix.$file))
			list_dir($dirname.$fileprefix.$file.'',"/");
		else
			$result_array[]=$dirname.$fileprefix.$file;
	}
	closedir($handle);
	return $result_array;
}

$dirs=list_dir("c:/","");
$i=0;
while($i<sizeof($dirs))
{
	echo $dirs[$i++];
	echo "<br>";
}
?>

/Viktor

Medlem sedan juli 2002732 inlägg
#4

Fungerar fint! Hur skall man göra ifall man få filstorleken
på filen att synas på skärmen?

Medlem sedan feb. 20012 412 inlägg
Medlem sedan mars 2001218 inlägg
#6

vill sig inte...

tjenare...

Fortsätter på denna tråd.. eftersom det är ungefär vad jag håller på med...

Körde Viktors sista kod där...

Den listar alla filer.. utan problem...

men det finns en katalog som heter "hej"...
den visas inte som katalog... utan som bilder... precis som alla andra filer i katalogen...

kolla: http://festivalen.ung08.nu/dev/test.php

Jag vill få det att fungera så:

1. Jag kan lista alla namn på underkatalogerna i en katalog...
2. Lista alla filer.. och inga kataloger i en viss katalog...

nån..?!

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)