Gå til innhold

Gruppere mapper i "directory of"


Anbefalte innlegg

Jeg har mikset sammen et lite "directory of" script. Men jeg ønsker å gruppere mappene øverst. Nå sorteres alt etter alfabetisk rekkefølge.

 

Kan noen hjelpe meg med dette?

 

 

if (isset($_GET['dir'])) {

$subfolder = $_GET['dir'];

}

 

$count = "0";

$getDir = opendir(".$homeDir/$subfolder");

 

if (isset($_GET['dir'])) {

echo "<img src='./images/icons/folder.gif'> <font size='4'><a href='java script:history.go(-1)'>..</a></font><br>";

}

 

while($filename = readdir($getDir)) {

 

if ($filename[0]!= "." && $filename[0]!= ".." ) {

 

// 1. The "explode/end" approach

$ext = end(explode('.', $filename));

 

// 2. The "strrchr" approach

$ext = substr(strrchr($filename, '.'), 1);

 

// 3. The "strrpos" approach

$ext = substr($filename, strrpos($filename, '.') + 1);

 

// 4. The "preg_replace" approach

$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);

 

// 5. The "never use this" approach

// From: http://php.about.com/od/finishedphp1/qt/file_ext_PHP.htm

$exts = split("[/\\.]", $filename);

$n = count($exts)-1;

$ext = $exts[$n];

 

if ($n == 0) { echo "<img src='./images/icons/folder.gif'> "; }

elseif ($ext == "pdf") { echo "<img src='./images/icons/pdf.gif'> "; }

elseif ($ext == "txt") { echo "<img src='./images/icons/text_plain.gif'> "; }

elseif ($ext == "pps") { echo "<img src='./images/icons/ppt.gif'> "; }

elseif ($ext == "doc") { echo "<img src='./images/icons/text.gif'> "; }

elseif ($ext == "jpg") { echo "<img src='./images/icons/image.gif'> "; }

elseif ($ext == "JPG") { echo "<img src='./images/icons/image.gif'> "; }

 

if ($n == 0) {

if (isset($_GET['dir'])) {

echo "<a href=\"?meny=dokumentasjon&side=javascript_input2&dir=$subfolder/$filename\">$filename</a><br>";

} else {

echo "<a href=\"?meny=dokumentasjon&side=javascript_input2&dir=$filename\">$filename</a><br>";

}

}

 

if ($n == 1) {

echo "<a href=\"#\" onclick=\"AddItem('$subfolder/$filename');\">$filename</a>     [ <a href='.$homeDir/$subfolder/$filename'>Åpne fil</a> ]<br>";

}

 

}

 

}

closedir($getDir);

Lenke til kommentar
Videoannonse
Annonse

Nedenfor er en kode jeg fant på php.net, koden skriver ut arrayet. Men hvordan får jeg mappene som klikkbar html?

 

<?php

 

function rec_scandir($dir)

{

$files = array();

if ( $handle = opendir($dir) ) {

while ( ($file = readdir($handle)) !== false ) {

if ( $file != ".." && $file != "." ) {

if ( is_dir($dir . "/" . $file) ) {

$files[$file] = rec_scandir($dir . "/" . $file);

}else {

$files[] = $file;

}

}

}

closedir($handle);

return $files;

}

}

 

function cmp($a, $b)

{

if ( is_string($a) && is_string($b) ) {

return strcmp($a, $b) > 0 ? 1 : -1;

}elseif ( is_int($a) && is_int($b) ) {

return $a > $b ? 1 : -1;

}elseif ( is_int($a) && is_string($b) ) {

return 1;

}elseif ( is_string($a) && is_int($b) ) {

return -1;

}else {

return 0;

}

}

 

function array_ukmultisort(&$arr, $func) {

uksort($arr, $func);

while ( list($key, $val) = each($arr) ) {

if ( is_array($val) ) {

array_ukmultisort($arr[$key], $func);

}

}

}

 

$dir = rec_scandir("./files");

array_ukmultisort($dir, "cmp");

echo "<pre>";

print_r($dir);

echo "</pre>";

 

?>

Lenke til kommentar

Skrev det om litt jeg, har ikke sjekket om det faktisk fungerer ;)

Men skal ikke være all verden og debuge

 

La til noe eksperimentell whitespace funksjonalitet der også slik at du får linkene under

hvert directory rykket inn X antall hakk, finnes sikkert en bedre måte, men gikk fort i

svingene der.

 

 

function rec_scandir($dir, $level=0) {

 

$whitespace = '    ';

$ws = '';

 

while($i=0 < $level) {

$ws .= $ws;

}

 

$files = '';

 

if ($handle = opendir($dir)) {

while (($file = readdir($handle)) !== false) {

if ($file != ".." && $file != ".") {

 

if (is_dir($dir . "/" . $file)) {

$files .= $ws.$dir."/".$file."<br />\n";

$files .= rec_scandir($dir . "/" . $file, $level+1);

} else {

$files .= $dir."/".$file."<br />\n";

}

}

}

closedir($handle);

return $files;

}

}

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...