BBCode Parserklasse 24. October 2004 um 00:00 Uhr /
Heute hat Christian Seiler die BBCode-Parserklasse für PHP ist in der neuen Version 0.2 beta zum öffentlichen Betatest freigeben.
Die StringParser_BBCode-Klasse bietet die Möglichkeit, Zeichenketten mit BB-Codes zu parsen und daraus beispielsweise HTML-Code zu erzeugen. BBCode sind Auszeichnungen, mit denen man Text formatieren oder strukturieren kann. Sie sind ähnlich wie die Auszeichnungen bei HTML aufgebaut, nutzen jedoch eckige Klammern anstelle von spitzen Klammern. Desweitern unterscheidet sich BBCode von HTML, dass ein ungültiger Code-Abschnitt ignoriert werden sollte, während bei HTML die Gültigkeit wichtig ist.
Ich habe schon die letzte Version erfolgreich in meinem CMS benutzt welches als Backend für http://worldheritage-forum.net läuft. Leider hatte die alte Klasse keine Absatzbehandlung implementiert, so dass anstatt mittels eines Absatzes
<p>Ein Absatz<p>
zu ersetzen, es per doppeltem
Ein Absatz<br /><br />
ersetzt wurde.
Jetzt hat die Klasse auch noch ein paar andere Schmankerl, und arbeitet auch mit einem anderen Ansatz:
Aus diesem Grund verfolgt die Klasse einen anderen Ansatz. Der Text wird sozusagen Zeichen für Zeichen eingelesen und der komplette Text wird dann in eine Baumstruktur umgewandelt. Diese Baumstruktur wird dann, sobald der komplette Text umgewandelt ist, in beispielswiese HTML-Code weiterverwandelt.
Da ich mir durch das Benutzen der Klasse sehr viel Zeit gespart habe, und sie dank der Lizenz - für die sich Christian entschieden hat - auch in kommerziellen Produkten nutzen kann, habe ich mich entschieden mich irgendwie erkenntlich zu zeigen. Aus diesem grund habe ich ein Design für die neue Dokumentation und Projektseite entworfen welches er jetzt benutzt.
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.
Christian Kruse schrieb am 24.10.2004
Du hast die Links verpeilt:
<a href=""Dokumentation und <a class="extlink" href="http://www.christian-seiler.de/projekte/php/bbcode/index.html">Projektseite</a>
Jeena Paradies aus Bamberg schrieb am 24.10.2004
Oj, dass werde ich gleich berichtigen, das kommt davon wenn man voreilig auf den »Veröffentlichen« Knopf drückt ;).
Jeena
Jens Grochtdreis aus Mainz schrieb am 01.11.2004
Ich frage mich bei BBCode immer, wo der tiefere Sinn liegt. Ob ich nun einen Absatz mit eckigen oder spitzen Klammern auszeichne ist doch egal, wer HTML nicht kann, muß beides lernen. Wenn ich also einen Kunden so seine Seiten pflegen lasse, kann ich ihm auch gleich eine kleine HTML-Schulung angedeihen lassen, wie ich den BBCOde auch schulen muß. Oder habe ich da was übersehen?
Jeena Paradies aus Bamberg schrieb am 01.11.2004
Ich habe mich gerade mit Christian kurzgeschlossen und folgende überlegungen kamen heraus:
Man muss bei HTML <, > und & maskieren.
Bei HTML darf man keine Fehler machen, sonst ist es invalide. Wenn man die versucht abzufangen, muss man sowieso einen Parser schreiben.
Wenn man HTML erlaubt, muss man entweder filtern (=> Parser schreiben, wenn es richtig funktionieren soll) oder man muss alles erlauben, was dann dazu führt, dass jeder JavaScript/ActiveX und anderen »bösen« Code posten kann.
Wenn man bestimmte Konstrukte haben will (zum Beispiel, um einen Beispielquelltext auszuzeichnen o.ä.), müsste man diese bei HTML immer von Hand eingeben, bei BBCode kann man einfach einen Tag durch eine ganze Reihe von HTML-Tags ersetzen. So muss man sich keine komplizierten HTML-Konstrukte merken, nur, wenn man etwas auszeichnen will.
Wenn man je nach Anzeigeort (Hauptseite / Unterseite) die Inhalte verschieden auszeichnen will geht das nicht mit hart gecodetem HTML.
Man kann Techniken wie http://de3.php.net/imagepstext nur mit gleichem - weil man auch einen Parser schreiben muss - bzw. noch größerem Aufwand einsetzen, da man ihn dann auch noch selbst schreiben muss, und nicht den fertigen einsetzen kann.
Textile arbeitet für den Benutzer gesehen ziemlich ähnlich: http://textpattern.com/help/?item=intro Dort gibt es noch ein paar Infos
Jens Grochtdreis aus Mainz schrieb am 01.11.2004
Das überzeugt mich nur halb. Ich unterstelle zwar, daß Kunden keine Ahnung von HTML haben, aber bösartig sind sie selten. Deshalb müssen sie das eine wie das andere lernen. Sinn macht eine Kurzschreibvweise in meinen Augen, wie sie bei phpCMS möglich ist. Dort kann ich auch meine eigenen "Tags" definieren, die dann druch ganze Absätze und Textbausteine erszt werden können.
Mich stört bislang nich bei den ganzen Methoden, die durch aus die Arbeit erleichtern, daß man immer Anfang und Ende benötigt. Doch das wird sich wohl nicht verhindern lassen, haben wir doch Inline-u und Blockelemente. Günstig wäre doch, wenn man den Absatz nicht einkreisen müßte.
Aber am besten ist dann wohl doch so eine Art WYSIWYG-Editor, bei dem BBCode im Hintergrund arbeitet. Ich denke dabei immer nur daran, wie man dem Unkundigen helfen kann. Ich selber benötige eine solche Hilfe nicht :-)
Jeena Paradies aus Bamberg schrieb am 01.11.2004
Jeena Paradies aus Bamberg schrieb am 02.11.2004
Gerade habe ich gesehen dass Torsten Anacker ein JavaScript zur verfügung stellt, mit welchem es möglich ist Im Internet Explorer und Mozilla BBCode an Cursorstelle einzufügen. Auch ist es möglich einen Text in der Textarea zu markieren und ihn dann per Mausklick mit BBCode zu umranden. Somit hat man eigentlich schon fast einen kleinen Editor bei welchem man sich als User gar keine Gedanken machen muss ob man die Syntax richtig geschrieben hat oder nicht.
Und hier noch der Link dazu: http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/
Josef Behr aka Dejot aus Werne/NRW/DE schrieb am 24.03.2005
Und dazu kommt, dass BBCode einfacher zu handhaben ist, als HTML-Code, z.B. bei URLs und Bildern, bei denen der Besucher auch noch den verwendeten Doctype beachten müsste.
Ok, kommt etwas spät der Kommentar, aber ich war wirklich ewig nicht mehr hier...