myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [PHP] Dateinamen inkl. Dateititel sortieren (https://mygully.com/showthread.php?t=2435651)

PyroC 28.09.11 13:25

[PHP] Dateinamen inkl. Dateititel sortieren
 
Hallo,
ich komm momentan nicht weiter bei meinem Problem, und zwar soll das S***** mir eine *.php Liste sortieren. So wie das S***** im moment ist werden die Dateien samt Namen zwar ausgegeben, aber eben nicht sortiert. Hab auch schon einiges Probiert aber so richtig funzen will es nicht...:cry:
Die letzten überbleibsel der Versuche hab ich momentan rauskommentiert.

Ich hoffe Ihr könnt mir helfen.
Danke

PHP-Code:

<?php
#$sortdatei = array();
#$sorttitel = array();

 // Verzeichnisnamen extrahieren!
 
$dir "testverzeichnis/";

  
// Verzeichnisdateien einlesen
  
$verz_handle openDir($dir);

  while (
$datei readDir($verz_handle)) {
   if (
substr_count($datei".php") > 0) {
   
#$sortdatei[] = $datei;
    
$datei_handle fOpen($dir $datei"r"); // Verzeichnisdatei öffnen
    
$inhalt fRead($datei_handle1000); // Verzeichnisdatei teilw. einlesen
    
fClose($datei_handle);
    
ereg("<title>(.*)<\/title>"$inhalt$titel); // und Titelbeschreibung daraus extrahieren!
    #$sorttitel[] = $titel[1];

        
if ($datei <> "index.php") {
            echo 
"<a href=\"$dir$datei\">$titel[1]</a><br>\n";
        }
   }
  }
  
closeDir($verz_handle);
 
  
#sort($sorttitel);
  #sort($sortdatei);

#foreach($sorttitel as $titel){
    #echo "SORT1: <a href=\"$dir$datei\">$titel</a><br>\n";
        #foreach($sortdatei as $datei){
        #echo "SORT2: <a href=\"$dir$datei\">$titel</a><br>\n";
        #}
#}
?>


Epeos 28.09.11 20:01

Jetzt mal ganz blöd gefragt. In der Schleife gibst Du die Name und Titel von der Datei aus, die Du gerade eingelesen hast. Das ist noch nicht alphabetisch sortiert. Außerhalb der Schleife machst Du dann die Sortierung (gerade auskommentiert). Damit sollten dann $sorttitel und $sortdatei sortiert sein. Hast du die sortierten Arrays dann auch noch mal irgendwo ausgegeben, um zu sehen, ob die Sortierung funktioniert?

urga 29.09.11 00:47

dein problem ist, daß du deine titel und dateinamen in 2 unterschiedlichen arrays speicherst. wenn du die dann seperat sortierst, passt natürlich titel[N] nicht mehr zu dateiname[N]

also eine möglichkeit:

statt
Code:

$sortdatei[] = $datei;
$sorttitel[] = $titel[1];

lieber
Code:

if ($titel[1]) {
  $toSort[] = array ('file' => $datei, 'title' => $titel[1]);
}
else {
  die ("can't parse $datei");
}

dann nach der while-schleife
statt 2 sorts ein usort:
Code:

// php >= 5.3
usort ($toSort, function ($a, $b) { return strcmp ($a['title'], $b['title']); } );
foreach ($toSort as $t) {
 ...
}

bzw.
Code:

// php < 5.3
function bla ($a, $b) {
  return strcmp ($a['title'], $b['title']);
}
usort ($toSort, 'bla');
foreach ($toSort as $t) {
 ...
}



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.