Mh wenn ich der Funktion parser() jetzt den Text übergebe...
wie soll ich das verstehen: preg_replace( "some(capuring)pattern"?
Also muss ich alle meine RegExp in ein Array schreiben und dann durch das nächste Array ersetzen?
Wobei in den Ersatzarrays dann die Callback-Funktionsaufrufe gelistet wären.
Also müssten in Array 1 mein BBCode und in Array 2 meine RegExp stehn?
PHP Docu
mixed preg_replace_callback ( mixed $Suchmuster, callback $Callback, mixed $Zeichenkette [, int $Limit [, int &$Anzahl]] )
Im ersten Array hast du doch die Regex Definitionen.
Im zweiten die Ersatzbehandlung, also die Liste der Ersatzmuster bzw callbackfunktionen.
Im dritten parameter hast du dann den zu bearbeitenden Quellinput.
Was soll $1 für einen Inhalt haben?
komme darauf zurück
Und ist es wirklich sinnvoll anstatt X mal 1 Funktion X mal 3 Funktionen aufzurufen?
nicht x mal 3.
Und ja, es ist sinnvoll.
Schau. Zuerst blödes Design.
[link=http://example.org]Label[/link]
"/[link=(.*?)](.*?)[/link]/"
was ist daran blöde? Später fällt dir ein, dass du auch ein hreflang oder ein rel Attribut erlauben willst.
Du darfst die Syntax aber nicht brechen, denn der Code wurde so und so oft verwendet. Kurz, das ist nicht extensibel und die Rex zu matchen fällt kompliziert aus, wenn du auch noch target, rel hreflang matchen willst..
Gutes Design.
[func:
[par1:val]
[par2:val]
]
Paradigma 1: Die Reihenfolge der Parameter ist egal
Paradigma 2: Whitespace zwischen parametergruppen ist zur Übersichtlichkeit
erlaubt.
Paradigma 3: Alle Parameter sind optional (es gibt einen defaultwert für alles.)
So das geht jetzt nicht mehr mit einer einfachen REX.
hier brauch es eine Callbackfunktion, deren Aufgabe darin besteht, die Parameter herauszuziehen.
$test =~ s/ [link:($balanced_parameters_1_level)] / user_link($1) /egx
Was ist in $1? Es ist die Liste aller Parameter. Und diese kann ich jetzt in der Callbackfunktion herausziehen, ohne dass die Reihenfolge der Parameter eine Rolle spielt.
Ich kann in der Callbackfunktion alles machen, was ich will.
Und vor allem. Ich kann den Funktionsumfang stetig erweitern, ohne dass ich bestehenden BB-Code breche.
mfg Beat
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische