| | | | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Nur mal so ein Vorschlag, überall sehe ich immer die Methoden via opendir() mit Verzeichnissen zu arbeiten, zusätzlich eine Funktion für Rekursion selbst zu schreiben etc. Dabei bietet doch php schon seit einiger Zeit auch viel komfortablere und mächtigere Möglichkeiten mit Verzeichnissen und Dateistrukturen umzugehen ohne z.b. bei Rekursion sich seinen Code selbst schreiben zumüssen Insbesondere die seit php5 vorhandenen Iteratoren der SPL (DirectoryIterator, RecursiveDirectoryIterator) z.b. in Kombination mit dem FilterIterator bieten die Möglichkeit solche Dinge viel einfacher zu handhaben wie ich finde. Ich fände es schön wenn in der Wiki vielleicht auch die Möglichkeiten mit den Iteratoren erklärt oder zumindest mit ein paar Links aufs Manual erwähnt werden. (Nein das ist keine Meldung meinerseits das zu übernehmen, nur ein Vorschlag )
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | @robo47: Bin auch dafür. Man kann den Artikel ja zweiteilen. Einmal die prozedurale Variante und einmal die objektorientierte. Ich finde es übrigens auch genial, dass die SPL ab PHP 5.3 fester Bestandteil von PHP ist und sich nicht mehr deaktivieren lässt. So hat man wenigstens die Aussicht, sie in Software wirklich einsetzen zu können, ohne viele Kunden auszuschließen, da Systemadministratoren ja bekanntermaßen immer alles deaktivieren, was man nur deaktivieren kann. @nikosch: geht wirklich nicht und mit exit() ist es dasselbe Desaster. Klammern kann man eigentlich nur bei include_(once), require(_once), print und echo komplett und unbedingt weglassen.
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” Geändert von Manko10 (04.10.2008 um 23:58 Uhr). |
| | |
| | ||
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
![]() (Ich bitte den Stil (Formatierung, Variablenbennungen, etc) zu entschuldingen, soll nur der Demonstration dienen, ist grad so in ein paar Minuten entstanden, kann man also definitiv auch besser/ordentlicher machen )Dateien auflisten PHP-Code: Code: Dateien: TestFile8.jpg TestFile6.txt TestFile1.txt TestFile5.jpg TestFile2.txt TestFile2.jpg TestFile3.txt TestFile4.jpg TestFile4.txt TestFile6.jpg TestFile7.txt TestFile9.txt TestFile1.jpg TestFile9.jpg TestFile3.jpg TestFile5.txt TestFile7.jpg TestFile8.txt PHP-Code: Code: Verzeichnisse: .. files1 files3 files2 . PHP-Code: Code: Rekursive Verzeichnisse: files1 files3 files3.2 files3.1 files2 files2.2 Verzeichnissestruktur ausgeben mit Dateien (Rekursive Iteratoren) PHP-Code: Code: Rekursive Struktur mit Verzeichnissen und Dateien:
[FILE] TestFile8.jpg
[FILE] TestFile6.txt
[FILE] TestFile1.txt
[DIR] files1
[FILE] TestFile1.1.txt
[FILE] TestFile1.2.txt
[FILE] TestFile5.jpg
[FILE] TestFile2.txt
[FILE] TestFile2.jpg
[DIR] files3
[FILE] TestFile1.txt
[DIR] files3.2
[FILE] TestFile3.2.2.txt
[FILE] TestFile3.2.1.txt
[DIR] files3.1
[FILE] TestFile1.jpg
[FILE] TestFile3.txt
[FILE] TestFile4.jpg
[DIR] files2
[FILE] TestFile2.1.txt
[DIR] files2.2
[FILE] TestFile2.2.1.txt
[FILE] TestFile2.2.2.txt
[FILE] TestFile2.2.txt
[FILE] TestFile4.txt
[FILE] TestFile6.jpg
[FILE] TestFile7.txt
[FILE] TestFile9.txt
[FILE] TestFile1.jpg
[FILE] TestFile9.jpg
[FILE] TestFile3.jpg
[FILE] TestFile5.txt
[FILE] TestFile7.jpg
[FILE] TestFile8.txt
Da die Iteratoren keinerlei Optionen zur Sortierung bieten, hier noch ein paar Beispiele wie man den output sortieren kann: Sortierte Ausgabe eines Verzeichnisinhalts PHP-Code: Output: Code: . (Size: 4096 ) .. (Size: 4096 ) TestFile1.jpg (Size: 2 ) TestFile1.txt (Size: 2 ) TestFile2.jpg (Size: 2 ) TestFile2.txt (Size: 2 ) TestFile3.jpg (Size: 2 ) TestFile3.txt (Size: 2 ) TestFile4.jpg (Size: 2 ) TestFile4.txt (Size: 2 ) TestFile5.jpg (Size: 2 ) TestFile5.txt (Size: 2 ) TestFile6.jpg (Size: 2 ) TestFile6.txt (Size: 2 ) TestFile7.jpg (Size: 2 ) TestFile7.txt (Size: 2 ) TestFile8.jpg (Size: 2 ) TestFile8.txt (Size: 2 ) TestFile9.jpg (Size: 2 ) TestFile9.txt (Size: 2 ) files1 (Size: 4096 ) files2 (Size: 4096 ) files3 (Size: 4096 ) PHP-Code: Code: [dir] . (Size: 4096 ) [dir] .. (Size: 4096 ) [dir] files1 (Size: 4096 ) [dir] files2 (Size: 4096 ) [dir] files3 (Size: 4096 ) [file] TestFile1.jpg (Size: 2 ) [file] TestFile1.txt (Size: 2 ) [file] TestFile2.jpg (Size: 2 ) [file] TestFile2.txt (Size: 2 ) [file] TestFile3.jpg (Size: 2 ) [file] TestFile3.txt (Size: 2 ) [file] TestFile4.jpg (Size: 2 ) [file] TestFile4.txt (Size: 2 ) [file] TestFile5.jpg (Size: 2 ) [file] TestFile5.txt (Size: 2 ) [file] TestFile6.jpg (Size: 2 ) [file] TestFile6.txt (Size: 2 ) [file] TestFile7.jpg (Size: 2 ) [file] TestFile7.txt (Size: 2 ) [file] TestFile8.jpg (Size: 2 ) [file] TestFile8.txt (Size: 2 ) [file] TestFile9.jpg (Size: 2 ) [file] TestFile9.txt (Size: 2 ) Dateien mit der Endung .txt (Lässt sich natürlich beliebig erweitern, Dateigröße , Alter, Datum der letzten Bearbeitung oder sonstiges) Dazu müssen wir einen eigenen FilterIterator auf Basis der abstrakten Klasse FilterIterator basteln und dort die abstrakte methode accept() implementieren PHP-Code: Code: TestFile1.txt (Size: 2 ) TestFile2.txt (Size: 2 ) TestFile3.txt (Size: 2 ) TestFile4.txt (Size: 2 ) TestFile5.txt (Size: 2 ) TestFile6.txt (Size: 2 ) TestFile7.txt (Size: 2 ) TestFile8.txt (Size: 2 ) TestFile9.txt (Size: 2 ) http://www.php.net/~helly/php/ext/spl/main.html auch wenn das von 2007 ist, findet man dort zu dem was die SPL aktuell bietet wie ich finde viel mehr und viel detailliertere Informationen als im php Manual.
__________________ robo47.net - Blog, Codeschnipsel und mehr | Geändert von robo47 (06.10.2008 um 06:37 Uhr). | |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse: Fortgeschritten ![]() | Zitat:
vergesst aber das exception handling nicht! | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.php.de/wiki-diskussionsforum/47879-verzeichnis-auslesen.html | ||||
| Erstellt von | For | Type | Datum | |
| Klasse um rekursiv Verzeichnisse auszulesen - Developer's Guide | This thread | Refback | 19.10.2008 17:39 | |
| Klasse um rekursiv Verzeichnisse auszulesen - Developer's Guide | This thread | Refback | 13.10.2008 19:50 | |
| wiki/: Blogs, Photos, Videos and more on Technorati | This thread | Refback | 05.10.2008 01:49 | |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Verzeichnis auslesen -> Dateinamen in Array | quoba | PHP Tipps 2008 | 11 | 29.04.2008 16:21 |
| Beim Verzeichnis auslesen Dateinamen unterscheiden | Teela | PHP Tipps 2008 | 17 | 28.04.2008 22:05 |
| Verzeichnis auslesen und Dateien öffnen | jacos | PHP Tipps 2006 | 1 | 26.06.2006 10:53 |
| Verzeichnis auslesen... | madSoul | PHP Tipps 2006 | 9 | 03.04.2006 16:01 |
| Verzeichnis auslesen | saibot | PHP Tipps 2005-2 | 8 | 09.08.2005 12:22 |
| [Erledigt] Verzeichnis auslesen / redundante Daten | PHP Tipps 2005 | 6 | 25.05.2005 13:28 | |
| verzeichnis auslesen... | StartUpBoy | PHP Tipps 2005 | 13 | 29.03.2005 15:54 |
| Fehlersuche: Ordner aus Verzeichnis auslesen | DannyD | PHP Tipps 2004-2 | 6 | 19.11.2004 20:36 |
| User Verzeichnis auslesen | PHP-Fortgeschrittene | 5 | 29.10.2004 00:48 | |
| [Erledigt] Problem mit Verzeichnis auslesen | PHP-Fortgeschrittene | 7 | 20.10.2004 21:50 | |
| [Erledigt] Verzeichnis andersrum auslesen | PHP Tipps 2004 | 7 | 02.08.2004 07:39 | |
| verzeichnis auslesen | Trumpfass | PHP Tipps 2004 | 2 | 28.07.2004 21:37 |
| Probleme beim Verzeichnis auslesen. | Tutti | PHP Tipps 2004 | 8 | 26.07.2004 15:41 |
| Verzeichnis auslesen | PHP Tipps 2004 | 4 | 26.07.2004 12:33 | |
| Verzeichnis auslesen und in menu einfügen | PHP-Fortgeschrittene | 1 | 08.06.2004 00:16 | |