Loading...   Upload Image

BBCodeTutorials ť PHP/MySQL Tutorials ť BBCode

Verfasst von Lenox am 11.03.2010 - wurde schon 7223 mal gelesen

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

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


View printable version Druckbare Version anzeigen        Permalink Permalink

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:   Colorful Gfx  •   Pat DG  •   Blue-Graphics  •   Neontrauma  •   Chibi Graphics  •   Bloomotion  •   The Peril  •   Design Grafixx  •   ML-Worlds  •   Snipcreation  •   The Seduction  • Show all ...