#1
|
||||
|
||||
PHP: Bestimmte Stelle in Textdatei suchen und ab dort lesen....
Ich versuch mich ein wenig daran ein dynamisches Menü aus einer .txt zu lesen und so...
Hier das, was ich habe: PHP-Code:
Code:
index.php|Index test.php|Test Code:
[Haupt] index.php|Index|Unter test.php|Test|- [Unter] unter.php|Unter Ich müsste also zunächst die Datei öffnen und nach [Haupt] suchen und dann alles in diesem Abschnitt bis [Unter] einlesen. Ist dann für einen Fall gegeben daß es einen untergeordneten Link gibt ($arr[2]=="Unter"), so soll alles, was im Abschnitt [Unter] steht eingelesen und dargestellt werden. Wie mach ich das?
__________________
Zitat:
|
#2
|
||||
|
||||
vielleicht hilft Dir meine Idee
![]() Code:
index.php|Index unter1.php|Index|Unter1 unter2.php|Index|Unter2 test.php|Test|- thema3.php|Thema3 unter3.php|Thema3|Unter3 unter4.php|Thema3|Unter4 |
#3
|
||||
|
||||
Ja, das war die Möglichkeit die mir auch vorschwebte wenn ich nix anderes finde
![]()
__________________
Zitat:
|
#4
|
||||
|
||||
Ich kenne mich mit PHP leider nicht besonders gut aus, weil ich Perl bevorzuge, aber ich versuche dennoch zu helfen.
Ich würde die Textdatei einfach Zeile für Zeile in einen assoziativen Array (Hash) einlesen, der in etwa diese Struktur hat: $hash[Kategorie][Name] Der Wert ist dann eine Referenz auf eine andere Hashtabelle, die die Werte URI und Kategorie enthält. URI ist ein Skalar und Kategorie ist eine Referenz auf $hash[Unterkategorie]. Um die Textdatei auszulesen, kannst du einfach for dem while eine Variable $aktuelle_kategorie initieren. Falls die Zeile dann das Format [(.*)] hat, dann setzt du $aktuelle_kategorie auf den Wert zwischen den Klammern ($1?). Dann solltest du die einzelnen Zeilen den Kategorien zuordnen können. Auf diesem Weg kannst du das Menü recht leicht ausgeben lassen. Du könntest eine function schreiben, die mit der Kategorie 'Haupt' beginnt, dann den Schlüssel des Hash und die URI ausgibt und falls die Kategorie gesetzt ist, und auch angezeigt werden soll, ruft sich diese function rekursiv auf.
__________________
Geändert von maxl (20-10-2004 um 15:47 Uhr). |