PHP preg_match für HTML Tags

Shadow1701

Ensign
Registriert
Juli 2012
Beiträge
242
Ich grüße euch.

Wieder einmal stehe ich scheinbar auf dem Schlauch.

Ich habe ein preg_match das prinzipiell so aussieht: "|<tagstart>([^<]*)<tagend>|"

Soweit so unkompliziert, es sei den, innerhalb dieser beiden Tags finden sich jetzt weitere tags. Dann funktioniert das Ganze nicht mehr.

Funktioniert: <tagstart>das ist der text den ich brauche<tagend>
Funktioniert nicht: <tagstart>das ist der <strong>text</strong> den ich brauche<tagend>

Die Tags kann ich aber nicht einfach so löschen, bzw. kann ich das erst wenn ich die Rückgabe von preg_match erhalten habe. Die unerwünschten tags, die die Ausführung verhindern, ändern sich auch andauernd.

Wie löse ich das?
 
da eine Erklärung eingefordert wurde:
ich soll ein bestehende Script minimal anpassen, in diesem Script wird regex genutzt um HTML zu zerpflücken, das ist schon das erste Problem.

Es werden Dateien mit irgendwelchen texten importiert aus dem ganz bestimmte Teile importiert werden sollen.

Das passiert prinzipiell mit verschiedenen Versionen von "|<tagstart>([^<]*)<tagend>|".

Es ist mir bewusst, dass preg_match für HTML Dateien eigentlich, bzw. nur mit Tricks nutzbar ist. Die Frage ist jetzt wie ich das mit sowenig Aufwand wie möglich zum Funktionieren bringe.

Danke für die Links, ich muss mich wahrscheinlich damit abfinden, dass das mit dem minimalen Aufwand nichts wird. Ich werde es mit strip_tags versuchen, vielleicht habe ich ja Glück und die Quelldateien werden damit korrekt abgearbeitet, wenn nicht muss ich das Script wohl doch umbauen.
 
Shadow1701 schrieb:
Es ist mir bewusst, dass preg_match für HTML Dateien eigentlich, bzw. nur mit Tricks nutzbar ist. Die Frage ist jetzt wie ich das mit sowenig Aufwand wie möglich zum Funktionieren bringe.
Je nach HTML gar nicht -> HTML5 Parser.
Das Parsen des HTMLs ist jetzt aber kein Hexenwerk:
  1. HTML parsen
  2. Nodes durchlaufen bis zur gewünschten Stelle
  3. Nodeinhalt ausgeben und mittels strip_tags das HTML entfernen.
 
Alles klar und vielen dank, ich werde einen HTML parser nehmen, hab ich noch nie gemacht, werde ich aber sicher irgendwie schaffen.
 
Zurück
Oben