Loading...   Upload Image

BBCodeTutorials » PHP/MySQL Tutorials » BBCode

Verfasst von Lenox am 11.03.2010 - wurde schon 10690 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
8x bewertet
Schwierigkeit: mittel
Kommentare: [ 7 ]

Tag - Schlagwort BBCode Tag - Schlagwort Formatierung Tag - Schlagwort PHP

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)

<?php
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[] = '<b>';
	$replace[] = '</b>';
	$replace[] = '<i>';
	$replace[] = '</i>';
	$replace[] = '<u>';
	$replace[] = '</u>';
	$replace[] = '</font>';
	$replace[] = '</font>';
	$replace[] = '</font>';
	$replace[] = '<span class="highlight">';
	$replace[] = '</span>';
	$replace[] = '<table align="center" width="98%" cellpadding="4" cellspacing="1" class="tableinborder">
	<tr>
	<td align="left" class="tablecat"><span class="smallfont"><b>Zitat:</b></span></td>
	</tr>
	<tr class="normalfont">
	<td class="inposttable" align="left">';
	$replace[] = '</td>
	</tr>
	</table><br />';
	$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[] = '<font color="">';
	$replace[] = '<font size="">';
	$replace[] = '<font face="">';
	$replace[] = '<a href="mailto:"></a>';
	$replace[] = '<a href="mailto:"></a>';
	$replace[] = '<a href=""></a>';
	$replace[] = '<a href=""></a>';
	$replace[] = '<img src="" />';
	$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 = '<ul>';
		for($i = 1; $i < count($elements); $i++) {
			$list .= '<li>'.nl2br(rtrim($elements[$i])).'</li>';
		}
		$list .= '</ul>';
		$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 = '<ol type="'.$type.'">';
		for($i = 1; $i < count($elements); $i++) {
			$list .= '<li>'.nl2br(rtrim($elements[$i])).'</li>';
		}
		$list .= '</ol>';
		$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 = '<pre>'.str_replace('', '', $code).'</pre>';
		$end += 7;
		$offset = $end - ($strlen - strlen($code));
		$bb = substr_replace($bb, $code, $pos, $end - $pos);
	}
	
	// Smilies
	$bb = eregi_replace(';)', '<img src="smilies/wink.gif" alt=";)" border="0" />', $bb);
	
	return $bb;
}
?>


Texte an die Funktion übergeben!

<?php
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 "<br />";

$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

<?php
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 "<br />";

$message = nl2br($message); //Hier wird der Text an den sogenannten Enter-Stellen (<br />) 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 ^^

Bei Fragen schreibt ruhig Kommentare

Kommentar schreibenHinterlasse einen Kommentar

Du musst angemeldet sein, um einen Kommentar zu hinterlassen...

Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...


Affiliates:   Gallery Yuri  •   Chibi Graphics  •   Colorful Gfx  •   Blue-Graphics  •   Design Grafixx  •   The Seduction  •   Pat DG  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider