yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

BB-Codes



BB-Codes sind meist bestimmte Befehle in eckigen Klammern: [befehl]...[/befehl].

Dabei kann man zwischen zwei Typen dieser BB-Codes unterscheiden:
[xxx]yyy[/xxx]
[xxx=yyy]zzz[/zzz]

Anmerkung: Die in den Beispielen benutzen Codes enthalten ein Leerzeichen wie z.B. [i ]. Dies liegt daran, dass diese BB-Codes ansonsten von der yubb.de-Enginge interpretiert werden würden ;) Man muss sich also die Leerzeichen wegdenken.

Die erste Variante kann man für einfache Befehle wie unterstrichen ([u ]) oder kursiv ([i ]) nutzen.
Der PHP-Code zum Ersetzen der BB-Codes in HTML-Tags sieht folgendermaßen aus:
PHP-Datei:
1
2
3
4
5
<?
$string
="[i ]Hallo, ich bin ein kursiver Text.[/i ]";
$neustring=preg_replace("/\[i\](.*?)\[\/i\]/si""<i>\\1</i>"$string);
echo 
$neustring// Ergäbe: "<i>Hallo, ich bin ein kursiver Text.</i>"
?>

Weitere Möglichkeiten hierfür sind z.B. [u ] für unterstrichen, [img ] für ein Bild oder [email ] für eine E-Mailadresse. Man muss es nur in der preg_replace-Funktion auch ersetzen. Für weitere Infos schau weiter unten.


Die zweite Möglichkeit ist, einem BB-Code noch ein sogenanntes Attribut zu geben. So kann man z.B. ein BB-Code definieren, der es ermöglicht, je nach Belieben einen Text einzufärben.
Der Code hierfür wäre:
PHP-Datei:
1
2
3
4
5
<?
$string
="[color=red]Juhu, ich bin ein roter Text[/color]";
$neustring=preg_replace("/\[color=(.*?)\](.*?)\[\/color\]/si""<font color=\"\\1\">\\2</font>"$string);
echo 
$neustring// Ergäbe "<font color="red">Juhu, ich bin ein roter Text</font>"
?>

Eine weitere Anwendungsmöglichkeit wäre dann auch noch [url=http://www.link.de]Linktext[ /url].


preg_replace ist eine Funktion, die mit sogenannten regulären Ausdrücken arbeitet. Dies Themengebiet ist etwas zu groß, nun hier alles zu erklären, stattdessen möchte ich nur auf diese Beispiele hier eingehen:
Jedes (.*?) speichert einen Text. Nehmen wir das erste Beispiel:
Code:
preg_replace("/\[i\](.*?)\[\/i\]/si", "<i>\\1</i>", $string);

Hier liest (.*?) alles aus, was zwischen [i ] und [/i ] (aber ohne Leerzeichen, ansonsten würden diese Codes hier ersetzt werden) steht, wird gespeichert. Diesen Text kann man dann mit \\\\1 auslesen. \\\\1, weil es der erste ausgelesene Text ist.
Im zweiten Beispiel haben wir noch einmal (.*?), diesen Text kann man -logischerweise- mit \\\\2 auslesen.


Geschrieben von Phil Marx am 18.06.2004 (8553x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Das Beispiel funzt nicht, Leerstelle war natürlch entfernt. Hier eine Version, die mit CSS arbeitet und sich leicht zu einem kompletten BB-Code-Parser ausbauen lässt.



--- CUT---

<?php

// BB-Code ohne Attribut:

$string = "Hallo, ich bin recht schräg.";



$search = array("'<script[^>]*?>.*?</script>'si", // (Java-)Script matchen, falls erwünscht

"'\[i\](.*)\[/i\]'si");



$replace = array("",

"<span style=\"font-style:italic\">\\1</span>");



$newstring = preg_replace($search, $replace, $string);

echo $newstring; // Ergibt: <span style="font-style:italic">Hallo, ich bin recht schräg.</i>



echo "<br>"; // Nur zur Darstellung im Browser



// BB-Code mit Attribut:

$string = "[color=blue]Juhu, ich bin vollkommen blau![/color]";



$search = array("'<script[^>]*?>.*?</script>'si",

"'\[color=(\#[0-9A-F]{6}|[a-z]+)\](.*)\[/color\]'si");

// Matcht auch z.B. [color=#0000FF]BlaBla[/color]



$replace = array("",

"<span style=\"color:\\1\">\\2</span>");



$newstring = preg_replace($search, $replace, $string);

echo $newstring; // Ergibt <span style="color:blue">Juhu, ich bin vollkommen blau!</span>

?>

--- CUT---



Viel Spaß beim Testen!

Geschrieben von Lenny