XML-Parser mit preg_split

Parantatatam

mag Cookies & Kekse
Hallo, ich habe mich jetzt mal richtig mit preg_split() beschäftigt um das zu nutzen als XML-Parser, dafür ist es ja wirklich mehr als genial. Ich habe es auch schon sehr weit, bloß habe ich jetzt noch drei kleinere Probleme:
  • Die Elemente von DOCTYPE richtig parsen (am Ende wird das schließende Größerals-Zeichen an den letzten Eintrag gehängt)
  • Der Inhalt soll als eigenständiger Eintrag in dem Array auftauchen
  • Wenn im Inhalt ein Größerals- oder Kleinerals-Zeichen auftaucht, soll es anhand dieses Zeichens keinen neuen Array-Wert einfügen

Aktuell sieht meine Lösung so aus:
PHP:
<?php
$array = preg_split('@(?=</?(?:alpha:)*|<!*\b)@i', $xmltags);
?>
 
Zuletzt bearbeitet:
Die Frage wurde mir schon mal gestellt. Das Problem liegt darin, dass ich mich a) ausprobieren will und b) ich den integrierten XML-Parser nicht allzu toll finde.
 
Dafür sind sie die vorhandenen Parser aber korrekt. Deiner wird dagegen erst einmal in Testfällen diese Eigenschaft beweisen müssen. Und da du mit regulären Ausdrücken arbeitest, ist das wahrscheinlich, da eine kontextsensitive Sprache (XML) nicht durch eine reguläre Sprache (regulärer Ausdruck) beschrieben werden kann.
 
Das ist mir durchaus bewusst. Ich will ja erstmal das Dokument in Tags zerlegen, die Überprüfung folgt darauf, ich habe nicht umsonst die XML-Deklaration neben mir liegen (auch wenn ich finde, dass diese mit dem Parser des Mozilla Firefox nicht komplett umgesetzt wurde).
 
Zuletzt bearbeitet:
Ich möchte dir mal ein Beispiel zeigen:
Code:
<!-- declarations for <head> & <body> -->
Wie verhält sich dein Parser dabei? Werden eine Kommentardeklaration und zwei Elementdeklarationen erkannt oder nur eine einzige Kommentardeklaration?
 
Soweit bin ich ja noch gar nicht. ich würde dann prüfen, ob vorher ein Kommentar geöffnet wurde und bisher nicht geschlossen wurde. Falls dem so ist, würde es als Inhalt des Kommentars erkannt werden, anderenfalls als eigenständige Tags.
 
Zurück