Hallo Hans-Joachim,
Ich muss ja gestehen, dass es länger als lang gedauert hat bis ich mich darin zurecht gefunden habe.
Ich weiß, meine Dokumentation ist nicht so toll. :-(
$bbcode->addCode ('b', 'simple_replace', null, array ('<b>', '</b>'), 'inline', array ('listitem', 'block', 'inline', 'link'), array ());
Ich denke, dass über die beiden letzten Arrays festgelegt wird, ob und in welchem BB-Code dieser Code (in dem Fall [b]) verschachtelt werden darf.
Liege ich hierbei ersteinmal richtig?
Ja.
Ich würde gern wissen, was diese einzelnen Arrayinhalte...
array ('listitem', 'block', 'inline', 'link')
...bedeuten?
Gar nichts. :-) Das sind von Dir frei verwendbare Namen. Du kannst da auch 'hans' und 'joachim' reinschreiben.
Im drittletzen Parameter (hier: 'inline') definierst Du den sog. "Inhaltstyp" eines Codes. Diesen kannst Du frei wählen. Der vorletze Paramter gibt an, innerhalb welcher Inhaltstypen der Code vorkommen darf. Der letzte Parameter gibt an, innerhalb welcher Inhaltstypen der Code *nicht* vorkommen darf. Allerdings hat der letzte Parameter die Besonderheit, dass alle aktuell bereits geöffneten Codes angeschaut werden während der vorletzte Parameter nur den zuletzt geöffneten Code betrifft.
Bsp: [a] hat den Inhaltstyp 'ich' und [b] hat den Inhaltstyp 'du'. [a] und [b] sind so definiert:
$bbcode->addCode ('a', [...], 'ich', array ('ich', 'du', 'block'), array ());
$bbcode->addCode ('b', [...], 'du', array ('ich'), array ('du'));
[a] ist folglich überall erlaubt, [b] nur in 'ich' aber nicht in 'du'.
Folgende Beispiele:
- [a]Hallo[/a]
Würde akzeptiert werden, [a] ist ja überall erlaubt (s.u. bzgl. 'block').
- [b]Hallo[/b]
Würde ignoriert werden, [b] ist ja nur innerhalb von 'ich' erlaubt (s.u. bzgl. 'block').
- [a][b]Hallo[/b][/a]
Würde akzeptiert werden.
- [a][b][a]Hallo[/a][/b][/a]
Würde akzeptiert werden.
- [a][b][a][b]Hallo[/b][/a][/b][/a]
[a][b][a] würde akzeptiert werden, das innere [b] würde ignoriert werden und somit würde das "[b]Hallo" wie normaler Text behandelt werden (normalerweise würde nur das "Hallo" wie normaler Text behandelt werden.
Sonderfall: Wenn gar kein Code offen ist, dann ist der aktuelle Inhaltstyp 'block'. Man kann den natürlich auch selbst für eigene Codes verwenden.
Ist das ganze jetzt klarer geworden?
Viele Grüße,
Christian