BBCode Engine
-
Hallo,
für mein CMS benötigte ich einen BBCode Parser, ich habe zwar kurz gesucht aber während dessen überkahm mich mal wieder die 'Eigeninitiative' und so schrieb ich mir 'flink' selber einen.
Es ist noch nicht final, und wird vllt. noch in eine Klasse untergebracht, dennoch wollte ich mal ein wenig Feedback dazu haben um Verbesserungen zu Implementieren oder vllt. auf Dinge hingewiesen zu werden die ich im "Rausch des Programmierens" nicht berücksichtigt habe bzw. nicht für mich ersichtlich waren wie zb. kleine Fehler. Und nicht zuletzt für Verbesserungsvorschläge und um jenen den es nützlich sein kann das Script zur Verfügung zu stellen!
Der Parser / Die Engine Unterstützt "unbegrenzte" Parameter, d.h. man kann ein IMG tag erstellen und da als Parameter width/height usw. mit hinzufügen! Es können Verschachtelte BBCodes geparst werden. Fehlerhafte Codes werden einfach ignoriert. Auch Functoren können durch den BBCode aufgerufen werden.
Also wenn es wem nützlich sein kann würde mich das echt freuen! Für meine Zwecke leistet die "Engine" schon zufriedenstellend Ihren Dienst :D. Steht unter LGPLv3! Und kann frei verwendet werden auch für kommerziele Projekte!
http://www.c64.feuerware.com/page/index.php?topics=cmd&cmd=select&id=9
Kleines Beispiel! Hier ein BBCode der eine Funktion aufruft.
bbcode_New ($bbcodes,"php"); // BBCode (Tag) 'php' erstellen bbcode_SetReplace ($bbcodes["php"], "open",""); // replacement open tag bbcode_SetReplace ($bbcodes["php"], "close",""); // replacement close tag bbcode_AddFunctor ($bbcodes["php"], "content",'highlight_php'); // functor für content hinzufügen aufzurufende funktion 'highlight_php'
Kleines Beispiel für ein IMG Tag mit Parametern url, width und height.
bbcode_New ($bbcodes,"img"); bbcode_SetReplace ($bbcodes["img"], "open",'<img src="$url" style="width:$width; height:$height" alt="image : $url">'); bbcode_SetReplace ($bbcodes["img"], "close","</img>"); bbcode_AddParam ($bbcodes["img"],' ','$url','img='); bbcode_AddParam ($bbcodes["img"],' ','$width','width='); bbcode_AddParam ($bbcodes["img"],' ','$height','height=');
Hoffe es gefällt und kann euch nützlich sein! Anregungen und/oder Kritik immer gerne!
mfg. Patrick
Nachtrag :
Es gibt mit Sicherheit einige Alternativen zu meiner Engine, aber vllt. wollt Ihr dieser ja eine Chance geben, sie ist klein und performant und auch einfach handzuhaben und wird bei Bedarf erweitert, wenn diese nichts für euch Ist auch Ok!