Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
20.01.13, 17:52
|
#1
|
Erfahrener Newbie
Registriert seit: Sep 2009
Ort: NRW
Beiträge: 177
Bedankt: 197
|
Problem mit Sortiereihenfolge in S*****
Hallo Zusammen
ich hoffe Ihr könnt mir weiter helfen.
Ich habe ein S*****, welches mir meine Verzeichnisse nach bestimmten Dateien durchsucht.
Nun lasse ich diese Dateien nach der Aktualität sortieren.
Problem: Das S***** sortiert von A-Z und ich möchte gern von Z-A sortiert haben (mit dem Datum natürlich).
Sprich das Aktuellste oben stehen haben.
Als Zusatz hätte ich gerne, dass mir nur die Aktuellsten Dateien der letzten 30 Tage anzeigt.
Hier mein S*****:
PHP-Code:
<?php class FileExtensionFilterIterator extends FilterIterator { protected $whitelist; public function __construct(Iterator $iterator, array $whitelist) { parent::__construct($iterator); $this->whitelist = $whitelist; } public function accept() { $fileInfo = parent::current(); // Nur Dateien if (!$fileInfo->isFile()) { return false; } // Nur mit Endung aus $whitelist $pi = pathinfo($fileInfo->getFilename()); if (!in_array(strtolower($pi['extension']), $this->whitelist)) { return false; } return true; } } $path = 'K:\FTP\VIDEO'; $whitelist = array('avi', 'mkv', 'flv'); // Aufzulistende Dateiendungen $iterator = new FileExtensionFilterIterator( new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path)), $whitelist); $data = new ArrayObject(); // erstellen eines ArrayObjects mit den SplFileInfo-Objekten foreach($iterator as $value) { $data[$value->getmtime()] = $iterator->getFileInfo(); } // sortieren $data->ksort(); // ausgeben foreach($data as $key=> $value) { echo $value->getFilename() . '<br/>' . ' Aktualisiert: ' . date ("d.m.Y H:i:s.", $value->getmtime()) .' <br />'; } ?>
|
|
|
21.01.13, 07:54
|
#2
|
Newbie
Registriert seit: Oct 2009
Beiträge: 60
Bedankt: 25
|
Um von Z nach A, sprich umgekehrt, zu sortieren versuch mal krsort() statt ksort().
Für die letzten 30 Tage:
PHP-Code:
foreach($data as $key=> $value) { if($value->getmtime() >= strtotime ('-30 day')){ echo $value->getFilename() . '<br/>' . ' Aktualisiert: ' . date ("d.m.Y H:i:s.", $value->getmtime()) .' <br />'; } }
Ich hoffe das ist das was du gemeint hast.
|
|
|
25.01.13, 19:49
|
#3
|
Erfahrener Newbie
Registriert seit: Sep 2009
Ort: NRW
Beiträge: 177
Bedankt: 197
|
krsort() geht leider nicht... es kommt dann:
Fatal error: Call to undefined method ArrayObject::krsort() in C:\xampp\htdocs\lol.php on line 53
|
|
|
25.01.13, 19:53
|
#4
|
Erfahrener Newbie
Registriert seit: Sep 2009
Ort: NRW
Beiträge: 177
Bedankt: 197
|
okay... habs geändert... anstatt :
$data = new ArrayObject();
habe ich
$data = Array();
genommen und dann krsort($data).
Funktioniert nun super...
Jetzt habe ich nur das Problem, dass ich dieses s***** nutzen möchte aber NUR den letzten Ordner ausgeben möchte ABER nach den gleichen Suchkreterien... Ist dies möglich?
Habe ein paar Ansätze versucht, bekomme jedoch nur Fehlermeldugen... Ich wüsste nicht, wo ich ansetzen kann. Mit dem S***** suche ich ja nur nach Dateien
|
|
|
26.01.13, 16:36
|
#5
|
Newbie
Registriert seit: Oct 2009
Beiträge: 60
Bedankt: 25
|
Hab ich das richtig verstanden, du willst den aktuellsten Ordner ausgeben? Heißt den Inhalt des Ordners oder den Namen des Ordners?
|
|
|
26.01.13, 17:22
|
#6
|
Erfahrener Newbie
Registriert seit: Sep 2009
Ort: NRW
Beiträge: 177
Bedankt: 197
|
Also eigentlich möchte ich gerne die jeweiligen Ordnernamen ausgeben, in den die gefilterten Dateien drin sind. Und nicht die gefilterten Dateien an sich....
Eine andere (ggf. sogar bessere) Alternative wäre, dass ich nach Ordnern suche, die innerhalb der letzten 30 Tage aktualisiert worden sind. Mit Ausschluss bestimmter namen im Ordnernamen (wie z.B. sample).
|
|
|
26.01.13, 20:37
|
#7
|
Newbie
Registriert seit: Oct 2009
Beiträge: 60
Bedankt: 25
|
Also um statt den Namen der Datei den des Ordners auszugeben verwende statt echo $value->getFilename()
PHP-Code:
echo basename(dirname('K:\FTP\VIDEO'), $value->getFilename());
Ich habe es nicht getestet, aber so, oder so ähnlich, müsste es funktionieren.
|
|
|
27.01.13, 14:06
|
#8
|
Erfahrener Newbie
Registriert seit: Sep 2009
Ort: NRW
Beiträge: 177
Bedankt: 197
|
Funktioniert leider nicht, es wird nur der Ordnername : FTP ausgegeben...
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr.
().
|