BBKode

Som jeg lovede i mandags, vil jeg i dag skrive hvordan man tilføjer BBkode til gæstebogen (Det kan også bruges til andre ting). Du kender garanteret bbkode fra forums og lignende. Når du for eksempel vil skrive med fed tekst, skriver du [b]din tekst[/b] og det giver så resultatet “din tekst”

I denne tutorial vil jeg gå ind over hvordan du får URL, fed, kursiv, understreget , gennemstreget, overstreget, farvet tekst, og smileys til at virke.
Lav en ny php fil, og kald den bbkode.php (lig den i samme mappe som din gæstebog fil)

Til at tjekke om brugeren har skrevet nogle bbkoder vil vi bruge “preg_replace”. Jeg er ikke ekspert til at forklare, så hvis du vil vide mere om det, kan jeg anbefale videoerne A Crash-Course in Regular Expressions og Diving into php day 7 – Begge af Jeffrey Way. Du kan prøve at google det for at få mere at vide.

Først skal vi lave en funktion.

<?php
function bbkode( $text ) {
 }
?>

Først tjekker vi efter fed tekst. Hvis brugeren har skrevet [b]noget tekst og [/b], laver den dem om til html tagget strong, som giver fed tekst.

<?php
function bbkode($text) {
      // Tjekker efter fed tekst
      $text = preg_replace("(\[b\](.+?)\[\/b])is",'<strong>$1</strong>',$text);
}
?>

Det samme skal vi sådan set bare gøre for resten af vores bbkoder.

<?php
function bbkode($text) {
         // Tjekker efter fed tekst
        $text = preg_replace("(\[b\](.+?)\[\/b])is",'$1',$text);

         // Tjekker efter [i] og [/i] Kursiv
        $text = preg_replace("(\[i\](.+?)\[\/i\])is",'$1',$text);

        // Tjekker efter [u] og [/u] Understreget
        $text = preg_replace("(\[u\](.+?)\[\/u\])is",'$1',$text);

        // Tjekker efter [s] og [/s] Gennemstreget
        $text = preg_replace("(\[s\](.+?)\[\/s\])is",'$1',$text);

        // Tjekker efter [o] og [/o] Overstreget
        $text = preg_replace("(\[o\](.+?)\[\/o\])is",'$1',$text);

        // Tjekker efter [color] og [/color] Farver teksten alt efter hvilken farve brugeren har indtastet
        $text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","$2",$text);

        // Tjekker efter [size] og [/size] Gør teksten større er mindre
        $text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","$2",$text);

       // Linjeskift med [br]
       $text = preg_replace("(\[br])is","",$text);
}
?>

Når vi kommer til links bliver det hele lidt mere kompliceret. Først skal vi tjekke om det rent faktisk er en url. Det er nok ikke den bedste måde at gøre det på, men det virker. Hvis du kender til en bedre metode, så skriv gerne en kommentar!

Bemærk: Du skal stadig skrive denne kode mellem { } (jeg har tilføjet det over den fede tekst)

// Er det en URL?
$URLSearchString = "a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";

$text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '$1', $text);
$text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '$2', $text);

Nu kan brugeren både skrive [url="http://jayj.dk]Tekst[/url] og [url]http://jayj.dk[/url]. Forskellen er at i den første kan man selv bestemme hvilken tekst linket skal have. Som du nok har set er der tilføjet target=”_blank” i linket. Det gør bare at linket åbner i et nyt vindue, bare fjern det hvis du ikke vil have det.

Du kan også tilføje smileys, men til det kan vi ikke bruge preg_replace. Vi skal bruge str_replace, fordi vi ikke bruger regular expressions. Læs mere om str_replace i PHP Manualen.
Du kan selvfølgelig tilføje mange flere smileys end det her.

<?php
// Tjekker efter smileys
$text = str_replace(":)","",$text);
$text = str_replace(":D","",$text);

Tilføj så

return $text;

lige før }

Sådan her ser det færdig script ud:

<?php
// BBkode af Jayj.dk
function bbkode($text) {
	// Er det en URL?
            $URLSearchString = "a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";

	// Udfører URL søgning
            $text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '$1', $text);
            $text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '$2', $text);

            // Tjekker efter [b] og [/b] Fed
            $text = preg_replace("(\[b\](.+?)\[\/b])is",'$1',$text);

            // Tjekker efter [i] og [/i] Kursiv
            $text = preg_replace("(\[i\](.+?)\[\/i\])is",'$1',$text);

            // Tjekker efter [u] og [/u] Understreget
            $text = preg_replace("(\[u\](.+?)\[\/u\])is",'$1',$text);

            // Tjekker efter [s] og [/s] Gennemstreget
            $text = preg_replace("(\[s\](.+?)\[\/s\])is",'$1',$text);

            // Tjekker efter [o] og [/o] Overstreget
            $text = preg_replace("(\[o\](.+?)\[\/o\])is",'$1',$text);

            // Tjekker efter [color] og [/color] Farver teksten alt efter hvilken farve brugeren har indtastet
            $text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","$2",$text);

            // Tjekker efter [size] og [/size] Gør teksten større er mindre
            $text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","$2",$text);

	// Linjeskift med [br]
	$text = preg_replace("(\[br])is","",$text);

	// Tjekker efter smileys
	$text = str_replace(":)","",$text);
	$text = str_replace(":-)","",$text);
	$text = str_replace(":D","",$text);
	$text = str_replace(":hihi:","",$text);
	$text = str_replace(";)","",$text);
	$text = str_replace(":roll:","",$text);
	$text = str_replace(":P","",$text);
	$text = str_replace(":ked:","",$text);
	$text = str_replace(":O","",$text);
	$text = str_replace(":o","",$text);
	$text = str_replace(":chok:","",$text);
             $text = str_replace(":evil:","",$text);

         return $text;
      }
?>

Nu har vi så lavet bbkode funktionen, men vi mangler at tilføje den til gæstebogen. Åben din gæstebog fil.

Find linjen

$foresp = mysql_query("SELECT navn, dato, besked FROM bog ORDER BY nr DESC"); //Data hentes i tabellen bog

Tilføj så denne lille kode ovenover. bbkode.php er filnavnet på bbkode filen, bare ændr den til det din bbkode fil hedder.

require 'bbkode.php';

Nu find linjen

echo nl2br($data["besked"]);     //nl2br = newline oversættes til html breaktag.

Skift den ud med

echo nl2br(bbkode($data["besked"]));

bbkode er navnet på vores funktion.

Det var så dagens mandags tip om hvordan du tilføjer bbkoder til Niels Gamborg’s gæstebog. Hvis du har spørgsmål eller kommentarer, er du mere end velkommen til at skrive en kommentar. Du er mere end velkommen til at skrive idéer til andre tips!

Hvis du kunne lide tippet, og vil have flere så husk at Abonner på mit RSS Feed, hvor du også har mulighed for at få tippet leveret via mail.

By in Web | Published May 11, 2009

0

2 Responses to BBKode

  1. Jay siger:

    Nyt downloadlink!

  2. Casper siger:

    Super Jay ;) tak.

Leave a Reply