Heyho!
wenn Du selbst über die Ressource des zu parsenden HTMLs verfügst(...)
Tu ich nicht.
kannst Du Dich zwar darauf verlassen, dass
<!-- infos -->
als Beginn des gewünschten Blocks notiert ist.
Ja das ist auch so ein Problem. Am besten wär schon das Element mit der gewünschten Klasse. Den Namen der Klasse kann ich ja dann nach belieben ändern.
Genau; was willst Du als Abschluss heranziehen?
</div>
wird bei verschachtelten Strukturen mehrerer<div>
-Elemente zu Fehlern führen.
Das war halt meine Überlegung.
Also bliebe Dir nur übrig, ein eindeutiges Blockende ebenso zu notieren (vielleicht
<!-- ende -->
).
Genau das geht leider nicht, weil die Ressource ebend nicht mir gehört.
(...)Nutze DOM!
Ok ich habe jetzt folgendes versucht:
$doc = new DOMDocument();
// $content ist die HTML-Ressource
$doc->loadHTML($content);
echo htmlspecialchars($doc->saveHTML());
Das Gute daran ist, dass ich den Quelltext so ausgegeben bekomme.
Aber über der Ausgabe steht:
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : script in Entity, line: 33 in .............
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : div in Entity, line: 302 in .............
Beide Fehler kann ich auf den ersten Blick auch nicht nachvollziehen.
Das </script> in Zeile 33 schließt z.B. tatsächlich ein vorheriges <script>.
Deutet das trotzdem darauf hin, dass der Quelltext nicht ganz sauber ist?
Wenn das so ist versteh ich das Problem nicht, denn bei php.net steht:
Unlike loading XML, HTML does not have to be well-formed to load.
Die Ausgabe der Warnung kann ich sicher unterdrücken aber ich würde den Grund schon gern kennen.
Ok, dann muss ich mich jetzt wohl durch die DOM-Funktionen kämpfen.
Hast du vielleicht noch einen Tipp für mich welche Funktion ich nutzen kann oder muss?
LG