Morgen. Ich habe ein Array mit folgenden Elementtypen:
'[irgendwas=
wuppdi,blubb,
wuppdi]':
Ein Starttag, leitet einen neuen Knoten ein.
Das Pattern \[.*?(=.*?)?\][\r]?[\n]? matcht.
Der Teil nach dem = ist optional.
'irgendwas':
Ein Plaintext. Er ist sozusagen der Inhalt des Tags.
'[/irgendwas]':
Ein Endtag, beendet einen Knoten.
Das Pattern \[/.*?(=.*?)?\][\r]?[\n]? matcht.
Tjaa, wie parse ich das jetzt in einen Baum?
Ein Knoten sieht bei mir so aus:
Code:
class node {
var $content, $params, $plain, $children;
function addnode() {
$child=new node();
$this->children[]=$child;
return $child;
}
}
$content ist bei einem BB-Code der Code und bei einem node mit $node->plain==1 der Text.
$params sind die Parameter, also bei '[ quote=asdf]' wäre das 'asdf'.
$plain ist, wie weiter oben schon steht, ob der content als BB-Code oder als Text zählt
$children ist ein Array mit den Subknoten.
Folgender Code würde dem Baumdiagramm im Anhang entsprechen:
Code:
[b]
Wuppdi[/b]
[quote]
[i]
[color=#424242]
Blubb
[/color]
[/i]
[/quote]
Foo