PDA

Volledige versie bekijken : Bestanden gesorteerd weergeven


acroes
%Europe/Berlin %553 %2005, 14:16
Voor een flash CMS van een flash webwinkel heb ik het mogelijk gemaakt dat alle bestanden (afbeeldingen) van een bepaalde map in een List zichtbaar zijn.

Het vervelende alleen is dat de bestanden niet alfabetisch worden weergegeven. In het begin was dit niet zo'n probleem, maar ondertussen moet er flink gescrolld en gezocht worden naar de juiste afbeelding. Is het mogelijk om met PHP een directory alfabetisch op te halen. Ik gebruik momenteel de volgende code, deze haalt wel alles op maar niet alfabetisch.


$matches = GetMatchingFiles(GetContents('******'), "*.jpg");

function GetMatchingFiles($files, $search) {

// Split to name and filetype
if(strpos($search,".")) {
$baseexp=substr($search,0,strpos($search,"."));
$typeexp=substr($search,strpos($search,".")+1,strlen($search));
} else {
$baseexp=$search;
$typeexp="";
}

// Escape all regexp Characters
$baseexp=preg_quote($baseexp);
$typeexp=preg_quote($typeexp);

// Allow ? and *
$baseexp=str_replace(array("\*","\?"), array(".*","."), $baseexp);
$typeexp=str_replace(array("\*","\?"), array(".*","."), $typeexp);

// Search for Matches
$i=0;
foreach($files as $file) {
$filename=basename($file);
if(strpos($filename,".")) {
$base=substr($filename,0,strpos($filename,"."));
$type=substr($filename,strpos($filename,".")+1,strlen($filename));
} else {
$base=$filename;
$type="";
}

if(preg_match("/^".$baseexp."$/i",$base) && preg_match("/^".$typeexp."$/i",$type)) {
$matches[$i]=$file;
$i++;
}
}
return $matches;
}

function GetContents($dir,$files=array()) {
if(!($res=opendir($dir))) exit("<menu>".$dir."</menu>");
while(($file=readdir($res))==TRUE)
if($file!="." && $file!="..")
if(is_dir("$dir/$file")) $files=GetContents("$file",$files);
else array_push($files,"$file");

closedir($res);
return $files;
}

Alvast bedankt,

AC

acroes
%Europe/Berlin %303 %2005, 08:16
Ik heb de bestanden nu min of meer gesorteerd, de resultaten komen uit de functie als een array.
met sort($matches) heb ik nu de bestanden gesorteerd. Maar dan eerst alle bestanden met een hoofdletter, daarna komen de bestanden die beginnen met een kleine letter.
Hoe nu verder.

AC