Geschrieben von newwarrior am 03.12.2005, 07:08

Hi,

da ich in den letzten Tagen immer mehr Leute gesehen habe, die Problemem mit BBCOdes hatten oder gar nicht wussetn, was damit gemeint ist, dachte ich mir ich schreibe mal zu all diesen Themen ein Tutorial.

Gliederung

1. Was sind BBCodes?
2. Aufbau einer BBCodes Funktion
3. Einbauen der Funktion
4. Erklärung der Funktion
5. Abschluss

Was sind BBcodes?

BBCodes sind Elemente die in vielen Foren und Gästebüchern benutzt werden, um es den Usern zu ermöglichen seine Beuträge gestaltisch zu verändern.
So ist es dem User möglich seinen Test, der vielleicht eine wichtige Aussage enthält Fett zuschreiben.

Aufbau einer BBCodes Funktion


function bbcode ($bbcode)
{

$bbcode = addslashes(htmlspecialchars(stripslashes ($bbcode)));

$bbcode=preg_replace("/\[b\](.*?)\[\/b\]/si", "<b>\\1</b>", $bbcode);
$bbcode=preg_replace("/\[i\](.*?)\[\/i\]/si", "<i>\\1</i>", $bbcode);
$bbcode=preg_replace("/\[s\](.*?)\[\/s\]/si", "<s>\\1</s>", $bbcode);
$bbcode=preg_replace("/\[u\](.*?)\[\/u\]/si", "<u>\\1</u>", $bbcode);
$bbcode=preg_replace("/\[center\](.*?)\[\/center\]/si", "<center>\\1</center>", $bbcode);
$bbcode=preg_replace("/\[url\](.*?)\[\/url\]/si", "<a href=\\1>\\1</a>", $bbcode);
$bbcode=preg_replace("/\[code\](.*?)\[\/code\]/si", '<center>CODE:<div style="text-align:left;border:1px solid black;font-size:12px;color:green;background-color:#ececec;width:500px;padding:5px;">\\1</div></center>', $bbcode);
$bbcode=preg_replace("/\[img\](.*?)\[\/img\]/si", '<img src=\\1 border="0">', $bbcode);

$bbcode = nl2br ($bbcode);

return $bbcode;
}

Hier seht ihr nun eine fertig BBCODES Funktion. Mit dieser Funktion habt ihr die möglichkeit folgendes zu machen:

1. Texr fett zuschreibn
2. Text Kursiv zu schreiben
3. [s]Text zu durchstreichen[s]
4. Text unterstreichen
5. Links zu schreiben
6. Text zentrieren
7. Bilder einfügen
8. Eine Code Funktion (ACHTUNG: ist nicht für PHP gedacht!!!)

Eibauen der Funktion

Diese Funktion einzubauen und mit ihr zuarbeiten ist eigentlich ganz einfach:


//Includen der Funktion
include_once("bbcodes.php");
//Jetzt haben wir sie inculdet und müssen sie jetzt noch aufrufen:
$beitrag = bbcode ( $beitrag );

Jetzt haben wir die Funktion eingbunden und auch includet.
Jetzt wollen wir sicher auch mal einen Text verändern:


//ACHTUNG: Wenn ihr dieses Beispiel benutzt müsst ihr die Leerschritte hier //wegnhemen: [ b]
$beitrag = "Ein [ b]Fetter[ /b] und [ i]Kursiver[ /i] Text.";

//Includen der Funktion
include_once("bbcodes.php");
//Jetzt ahben wir sie enculdet und müssen sie jetzt noch aufrufen:
$beitrag = bbcode ( $beitrag );

Wunderbar, wenn wir uns das ausgeben lassen müsste es so aussehen:

Ein Fetter und Kursiver Text

Erklärung der Funktion
Diese Funktion zu erklären ist ziemlich einfach:


$bbcode = addslashes(htmlspecialchars(stripslashes ($bbcode)));

In dieser Codezeile pssen wir auf, dass niemand unseren Text versaut. Das heißt, es könnte ja jemand in seinem Beitrag PHP oder HTMl Code einfügen, der damit die Webseiten hacken will.
Mit dieser Zeile werden die HTMl und PHP Zeilen nicht als Code sondern wirklich nur als Beitrag gesehen.


$bbcode=preg_replace("/\[b\](.*?)\[\/b\]/si", "<b>\\1</b>", $bbcode);

Ok jetzt kommen wir eigentlich zum schwersten Teil:

/\[b\]

Dieser Teil in dem Regulären Ausdruck sucht nach dem jeweiligen Code.

\ Dieser Slash macht die [ Unschädlich.

(.*?)

Hier liest (.*?) alles aus, was zwischen [b ] und [/b ] (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.
Wenn man zwei texte hat kann man es so auch machen: haben wir noch einmal (.*?), kann man diesen Text -logischerweise- mit \\2 auslesen.


$bbcode = nl2br ($bbcode);

Hier sagen wir dem Text eigentlich nur, er soll dem Beitrag die Zeilenumbrüch einfügen, die der User selbst gesetzt hat beim schreiben.


return $bbcode;

So jetzt geben wir wieder alls zurück an unserer Hauptscript und lassen uns es anzeigen.

Abschluss

Bei Fragen Vorschlägen, Verbesserungen einfach eine PN an:

http://lima-city.de/mail.php?m=send&recipient=39687

Bewertung Anzahl
6
55,0 %
11 Bewertungen
5
20,0 %
4 Bewertungen
4
20,0 %
4 Bewertungen
1
5,0 %
1 Bewertungen