# BBCode

BBCode (von engl. Bulletin Board Code) ist eine an HTML angelehnte, jedoch vereinfachte Auszeichnungssprache, die bevorzugt für die Erstellung von Beiträgen in Webforen (engl. Bulletin Boards) eingesetzt wird. BBCode ist nicht offiziell reglementiert, stellt aber wegen seiner hohen Verbreitung einen Quasi-Standard sowie eine Best Current Practice dar.
BBCode wurde erstmals 1998 in der Webforensoftware Ultimate Bulletin Board (UBB) Version 3 eingeführt und wird dementsprechend manchmal auch als UBB Code bezeichnet. Mittlerweile ist er so etabliert und verbreitet, dass in den Programmiersprachen JavaScript, PHP und .NET frei nutzbare Implementierungen eines Parsers von BBCode zu HTML existieren.

## Beschreibung

Viele Textauszeichnungen funktionieren in BBCode analog zu HTML, beispielsweise [b]fett[/b], [i]kursiv[/i] und [u]unterstrichen[/u]. Zudem, sofern nicht direkt über HTML möglich, erlaubt BBCode auch komplexe Elemente wie zum Beispiel Listen, die folgendermaßen definiert werden: [list] [*]Eintrag 1 [*]Eintrag 2[/list].
Oftmals ist BBCode über eine einfach zu bedienende Oberfläche ober- oder unterhalb des Eingabeformulars – ähnlich gängigen Text-Editoren – verfügbar. Dies erfolgt dann in Verbindung mit JavaScript oder serverseitigen Programmiersprachen, wie zum Beispiel PHP oder Perl. Gerne gibt es dann auch Pop-ups, in denen der auszuzeichnende Text, die Listenelemente usw. eingegeben werden kann. Natürlich kann man die Elemente auch von Hand eintragen.
Der Einsatz von BBCode ermöglicht es Benutzern, Texte ähnlich wie mit HTML auszeichnen, ohne dass das Eingeben von HTML erlaubt sein muss. Sicherheitsbedenkliche Elemente wie beispielsweise JavaScript oder das Layout der Webseite störende Tags können damit generell ausgeschlossen werden. Das Herausfiltern von gefährlichen HTML-Tags (bei gleichzeitigem Erlauben von ungefährlichen) kann sich nämlich leicht als fehlerträchtig oder unzureichend erweisen.

## Aufbau und Umfang

Im Gegensatz zu anderen Auszeichnungssprachen ist BBCode nicht offiziell reglementiert, unterscheidet sich also von Implementierung zu Implementierung. Der grundlegende Aufbau und Umfang ist jedoch großteils gleich und bildet einen De-facto-Standard. Größere und auf ein Thema spezialisierte Foren erweitern den Standardsatz von BBCodes oft durch einige eigene Codes.
| Element | Auszeichnung in BBCode | Äquivalent in XHTML |
| Auszeichnungselement | [elementname]Inhalt[/elementname] | <elementname>Inhalt</elementname>⁠ |
| einfache Schriftformatierung | [b]fett[/b] [i]kursiv[/i] [u]unterstrichen[/u] [s]durchgestrichen[/s] [center]zentriert[/center] | <b>fett</b> oder <strong>fett</strong> <i>kursiv</i> oder <em>kursiv</em> <span style="text-decoration:underline;">unterstrichen</span> <span style="text-decoration:line-through;">durchgestrichen</span>, in HTML5 auch: <del>durchgestrichen</del> <p style="text-align:center;">zentriert</p> |
| erweiterte Schriftformatierung | [font=schriftart]Text[/font] [color=farbe]farbiger Text[/color] [size=schriftgröße]Text[/size] | <span style="font-family:schriftart;">Text</span> <span style="color:farbe;">farbiger Text</span> <span style="font-size:schriftgröße;">Text</span> |
| Gliederung | ... lorem ipsum (Leerzeile) dolor ... | <p>... lorem ipsum</p> <p>dolor ...</p> |
| Aufzählungsliste ohne Nummerierung | [list] [*]Punkt [*]Punkt [/list] | <ul> <li>Punkt</li> <li>Punkt</li> </ul> |
| Aufzählungsliste mit Nummerierung in arabischen Ziffern | [list=1] [*]Punkt [*]Punkt [/list] | <ol> <li>Punkt</li> <li>Punkt</li> </ol> |
| Aufzählungsliste mit Nummerierung in (kleinen) römischen Ziffern | [list=i] [*]Punkt [*]Punkt [/list] | <ol type="i"> <li>Punkt</li> <li>Punkt</li> </ol> |
| Aufzählungsliste mit Nummerierung in (kleinen) Buchstaben | [list=a] [*]Punkt [*]Punkt [/list] | <ol type="a"> <li>Punkt</li> <li>Punkt</li> </ol> |
| Verweise | [url=http://example.com]Linktext[/url] [url]http://example.com[/url] | <a href="http://example.com">Linktext</a> <a href="http://example.com">http://example.com</a> |
| Bilder | [img]example.com/bild.jpg[/img] | <img src="http://example.com/bild.jpg" alt="bild.jpg" /> |
| Smileys | :-) oder :) | <img src="/smileys/happy.png" alt="Smiley" /> |
| Quelltext | [code] Code jeglicher Art [/code] | <pre> Code jeglicher Art </pre> Die echte HTML-Syntax ist üblicherweise fortgeschrittener als hier dargestellt. |
| Zitate (nur als Blockzitat) | [quote]Zitat[/quote] [quote=Autor]Zitat[/quote] | <blockquote>Zitat</blockquote> <blockquote><div class="postedby">Zitat von Autor</div><p>Zitat</p></blockquote> Das Parsing von BBCode zu HTML ist hier vor allem bei Nennung des Autors abgesehen von <blockquote> sehr uneinheitlich. Innerhalb des Blockquote finden sich üblicherweise noch weitere Elemente. |