Lieber Götz,
Nicht ganz, er muß meiner Ansicht nach "</li></ul>\n" ausgeben, weil ja sonst noch ein offener und nicht geschlossener Listenpunkt in der Liste steht.
Man muß, bevor man die n schreibt schon schauen, ob die Tiefe in Zeile n+1 größer wird.
mir erscheint es sinnvoller, anhand der "-"-Zeichen die Zeilen in ein Array (assoziativ) aufzudröseln, um über die entstehende Array-Struktur die Listen-Struktur zu erhalten. Ich habe das oben ja schon gepostet. Dort werden Strings (ehemals Text-Zeilen) mit "/" zu Arrays explodiert, hier könnte man das analog mit "-" machen.
Das Zurückwandeln in die HTML-Liste (<ul>) habe ich oben schon gepostet. Das lässt sich sicherlich ganz einfach übernehmen. Der Bequemlichkeit halber habe ich die CSS-Klassen und Anker-Tags (mit href-Attribut) in der Funktion gelassen. Die sind sicherlich nicht ganz unnützlich (und schnell wieder rausgeschmissen).
Mit regulären Ausdrücken kann man dann den Link der aktuellen Seite wieder aus der Liste entfernen, bzw. dieses Listenelement dann noch mit einer CSS-Klasse (oder ID) entsprechend "behandeln".
Liebe Grüße aus Ellwangen,
Felix Riesterer.