Gunther: TOC aus HTML Code generieren

Beitrag lesen

Hallo werte Selfgemeinde!

Ich suche nach einem Ansatz, um aus meinem HTML Code eine Table of Contents zu generieren.
Rein die Überschriften zu extrahieren und den benötigten HTML Code für die TOC zu erstellen, ist nicht das Problem.

Dazu lese ich den HTML Code per file_get_contents() ein und extrahiere meine Überschriften per:

preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);  

Wobei ich aufgrund gewisser bestehender Konventionen[1] folgenden Pattern verwende:

$pattern = '/<[article|section|header|nav|aside].*>(?=\s*<h1 class="section_heading">)\s*<h1 class="section_heading">\s*[<\w-_ ="]*>*([^<\/]*)[<\/\w]*>*\s*<\/h1>/i';  

Das liefert mir (sofern Treffer vorhanden sind) ein Array, in dem jeder Treffer zum einen den HTML Teil mit der H1 Überschrift und dem öffnenden Tag des vorhergehenden Elements, und zum anderen den reinen Text der Überschrift.

Soweit so gut (hoffe ich).
Womit ich mich jetzt aber schwer tue ist, eine mögliche Verschachtelung, sprich verschiedene Ebenen zu ermitteln, um meine TOC entsprechend zu gestalten.

Jemand eine Idee, einen Vorschlag, bzw. Tipp für mich?

Besten Dank im Voraus!

Gruß Gunther

[1] Ich verwende nur <h1> Überschriften, die die Klasse "section_heading" haben. Innerhalb der H1 Überschrift können bspw. auch noch Span-Elemente vorhanden sein.