PHP Überschriften aus Text am Anfang alle ausgeben

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
643
ich habe in einem Blog Texte die so aufgebaut sind:

HTML:
<p>Einleitungstext hier</p>
<p>Zeile 1 hier</p>
<p>Zeile 2 hier</p>
<img src="bild.png" alt="X">
<p>Zeile 3 hier</p>
<h3 class="titel"><b>eine Überschrift</b></h3>
<p>Zeile 4 hier</p>
<h3 class="titel"><b>zweite Überschrift</b></h3>
<p>Zeile 5 hier</p>

Die p-Absätze werden mittels php explode-Funktion einzeln ausgegeben (Damit dazwischen automatisch werbung platziert werden kann).

Jetzt möchte ich gerne nach dem ersten p-Absatz (Einleitungstext) ein Inhaltsverzeichnis ausgeben für bessere Übersicht, also alle Überschriften vorab untereinander damit man weiß was alles kommt, aber nur wenn es sagen wir mindestens 3 Überschriften gibt. Außerdem wäre es gut wenn man direkt drauf klicken kann und zum Absatz der Überschrift springt, also muss irgendwie eine id generiert werden und die id muss ins HTML der Überschrift hinzugefügt werden:
HTML:
<h3 class="titel" id="1"><b>eine Überschrift</b></h3>

wie kann ich das am besten umsetzen ?
 
Um dir genasu zu helfen wäre es wohl einfacher, wenn man Teile des Codes sehen würde, der diesen HTML-Code erzeugt.

Grundsätzlich kannst du IDs ja beliebig vergeben für die Referenzen, und wenn du nur nen Basis-Text nimmst wie "meinLink" und dann eine fortlaufende Nummer dran hängst entsprechend der Überschriften.

´Kleiner Tipp noch: Es ist irgendwie unschön, einerseits Styling mit CSS und dandererseits dann noch etwas wie einen b-Tag zu verwenden.
 
  • Gefällt mir
Reaktionen: Pfandfinder
naja einfach so:

PHP:
$array = explode('</p>', $db['content']);

$i = -1;
foreach($array AS $db['content'])
{
    $i++;
    echo $array[$i];
}
 
Zur foreach schleife:
Wenn du schon einen index brauchst dann benutz bitte foreach($array as $i => $value) oder wenn du den value nicht benötigst eine normale for schleife
Bei deinem Konstrukt überschreibst du ja $db["content"] mit den jeweils aktuellen Wert der Schleife - funktioniert zwar in deinem Fall, ist aber ziemlich abstrus

Zum Problem du bekomnst fertiges Html von der Datenbank welches du nachträglich manipulieren musst.
In diesem Fall würde ich es Parsen - dann kannst du einzelne Knoten die du benötigst heraus extrahieren bzw. mit Attributen anreichern

Hier ein Link
https://codingreflections.com/php-parse-html/
 
  • Gefällt mir
Reaktionen: netzgestaltung, tollertyp und Pfandfinder
Zurück
Oben