BBCode - Tutorial

Hier erkläre ich euch in kurzen Schritten wie man einen BBCode aufbauen könnte!

Wir Beginnen:
(erstellt euch eine neue PHP-Seite)


    function bbcode($bb) {
	    $offset = 0;
	    while(($pos = strpos($bb, '[noparse]', $offset)) !== false) {
	        $end = strpos($bb, '[/noparse]', $pos);
	        if($end === false) break;
	        $noparse = substr($bb, $pos + 9, $end - ($pos + 9));
	        $noparse = str_replace(array('[', ']'), array('[', ']'), $noparse);
	        $end += 10;
	        $bb = substr_replace($bb, $noparse, $pos, $end - $pos);
	        $offset = $end;
	    }
	    $search[] = '[b]';
	    $search[] = '[/b]';
	    $search[] = '[i]';
	    $search[] = '[/i]';
	    $search[] = '[u]';
	    $search[] = '[/u]';
	    $search[] = '[/color]';
	    $search[] = '[/size]';
	    $search[] = '[/font]';
	    $search[] = '[highlight]';
	    $search[] = '[/highlight]';
	    $search[] = '[quote]';
	    $search[] = '[/quote]';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '';
	    $replace[] = '
Zitat:
'; $replace[] = '

'; $bb = str_replace($search, $replace, $bb); $search = array(); $replace = array(); $search[] = '/\[color=(.*?)\]/'; $search[] = '/\[size=(.*?)\]/'; $search[] = '/\[font=(.*?)\]/'; $search[] = '/\[email\](.*?)\[\/email\]/'; $search[] = '/\[email=(.*?)\](.*?)\[\/email\]/'; $search[] = '/\[url\](.*?)\[\/url\]/'; $search[] = '/\[url=(.*?)\](.*?)\[\/url\]/'; $search[] = '/\[img\](.*?)\[\/img\]/'; $replace[] = ''; $replace[] = ''; $replace[] = ''; $replace[] = ''; $replace[] = ''; $replace[] = ''; $replace[] = ''; $replace[] = ''; $bb = preg_replace($search, $replace, $bb); $offset = 0; while(strpos($bb, '[list]', $offset) !== false) { $pos = strpos($bb, '[list]', $offset); $end = strpos($bb, '[/list]', $pos); if($end === false) break; $list = trim(substr($bb, $pos + 6, $end - ($pos + 6))); $elements = explode('[*]', $list); $list = '
    '; for($i = 1; $i < count($elements); $i++) { $list .= '
  • '.nl2br(rtrim($elements[$i])).'
  • '; } $list .= '
'; $end += 7; $offset = $end; $bb = substr_replace($bb, $list, $pos, $end - $pos); } $offset = 0; while(strpos($bb, '[list=', $offset) !== false) { $pos = strpos($bb, '[list=', $offset); $pos2 = strpos($bb, ']', $pos + 6); $type = substr($bb, $pos + 6, $pos2 - ($pos + 6)); $end = strpos($bb, '[/list]', $pos2); if($end === false) break; $list = trim(substr($bb, $pos2 + 1, $end - ($pos2 + 1))); $elements = explode('[*]', $list); $list = '
    '; for($i = 1; $i < count($elements); $i++) { $list .= '
  1. '.nl2br(rtrim($elements[$i])).'
  2. '; } $list .= '
'; $end += 7; $offset = $end; $bb = substr_replace($bb, $list, $pos, $end - $pos); } $offset = 0; while(($pos = strpos($bb, '[code]0[/code]', $pos); if($end === false) break; $code = substr($bb, $pos + 6, $end - ($pos + 6)); $strlen = strlen($code) + 13; $code = '
'.str_replace('', '', $code).'
'; $end += 7; $offset = $end - ($strlen - strlen($code)); $bb = substr_replace($bb, $code, $pos, $end - $pos); } // Smilies $bb = eregi_replace(';)', ';)', $bb); return $bb; }

Texte an die Funktion übergeben!

    include("bbcode.php");	 
	$message = "Ich bin ein [b]Fetter[/b] Text der auch einen [url=http://google.de]Link[/url] parat hat ;)"; 
	echo $message; // Nachricht unformatiert
	echo "
"; $message = bbcode($message); echo $message; //Formatierter Text

Mit "include("bbcode.php");" binden wir die Funktion ein

$message = "Ich bin ein Fetter Text der auch einen Link parat hat ;)";

Mit "$message = bbcode($message);" lassen wir den Text durch die Funktion laufen!

um bei Texten einen Zeilenumbruch anzeigen zu lassen der mit einer Enter-Taste im Textarea verfasst wurde sollte es dann so aussehen

    include("bbcode.php");
	$message = "Ich bin ein [b]Fetter[/b] Text der auch einen [url=http://google.de]Link[/url] parat hat ;)";
	echo $message; // Nachricht unformatiert
	echo "
"; $message = nl2br($message); //Hier wird der Text an den sogenannten Enter-Stellen (
) umgebrochen $message = bbcode($message); //Wir senden den Text an bbcode und lassen in arbeiten damit er den Text für uns umformatiert echo $message; //Formatierter Text

Mit der Funktion nl2br() sagen wir das wir den Text über Quellcode mit <br /> übersehen wollen aber in der Ansicht sollte es ein unsichtbarer umbruch sein!

Man kann es beliebig erweitern wenn man möchte :)
Beispielsweise bei den Smilies ^^

Welche bbc Codes gibt es so ? Liste der häufigsten Bbc Codes

Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0