Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / tutorialsphp / bbc-tutorial.php

aaaa5

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)

001<!--?php
002function bbcode($bb) {
003    $offset = 0;
004    while(($pos = strpos($bb, '[noparse]', $offset)) !== false) {
005        $end = strpos($bb, '[/noparse]', $pos);
006        if($end === false) break;
007        $noparse = substr($bb, $pos + 9, $end - ($pos + 9));
008        $noparse = str_replace(array('[', ']'), array('[', ']'), $noparse);
009        $end += 10;
010        $bb = substr_replace($bb, $noparse, $pos, $end - $pos);
011        $offset = $end;
012    }
013    $search[] = '[b]';
014    $search[] = '[/b]';
015    $search[] = '[i]';
016    $search[] = '[/i]';
017    $search[] = '[u]';
018    $search[] = '[/u]';
019    $search[] = '[/color]';
020    $search[] = '[/size]';
021    $search[] = '[/font]';
022    $search[] = '[highlight]';
023    $search[] = '[/highlight]';
024    $search[] = '[quote]';
025    $search[] = '[/quote]';
026    $replace[] = '<b-->';
027    $replace[] = '';
028    $replace[] = '<i>';
029    $replace[] = '</i>';
030    $replace[] = '<u>';
031    $replace[] = '</u>';
032    $replace[] = '';
033    $replace[] = '';
034    $replace[] = '';
035    $replace[] = '<span class="highlight">';
036    $replace[] = '</span>';
037    $replace[] = '<table align="center" width="98%" cellpadding="4" cellspacing="1" class="tableinborder">
038    <tbody><tr>
039    <td align="left" class="tablecat"><span class="smallfont"><b>Zitat:</b></span></td>
040    </tr>
041    <tr class="normalfont">
042    <td class="inposttable" align="left">';
043    $replace[] = '</td>
044    </tr>
045    </tbody></table><br>';
046    $bb = str_replace($search, $replace, $bb);
047    $search = array();
048    $replace = array();
049    $search[] = '/\[color=(.*?)\]/';
050    $search[] = '/\[size=(.*?)\]/';
051    $search[] = '/\[font=(.*?)\]/';
052    $search[] = '/\[email\](.*?)\[\/email\]/';
053    $search[] = '/\[email=(.*?)\](.*?)\[\/email\]/';
054    $search[] = '/\[url\](.*?)\[\/url\]/';
055    $search[] = '/\[url=(.*?)\](.*?)\[\/url\]/';
056    $search[] = '/\[img\](.*?)\[\/img\]/';
057    $replace[] = '<font color="">';
058    $replace[] = '<font size="">';
059    $replace[] = '<font face="">';
060    $replace[] = '<a href="mailto:"></a>';
061    $replace[] = '<a href="mailto:"></a>';
062    $replace[] = '<a href=""></a>';
063    $replace[] = '<a href=""></a>';
064    $replace[] = '<img src="">';
065    $bb = preg_replace($search, $replace, $bb);
066    $offset = 0;
067    while(strpos($bb, '[list]', $offset) !== false) {
068        $pos = strpos($bb, '[list]', $offset);
069        $end = strpos($bb, '[/list]', $pos);
070        if($end === false) break;
071        $list = trim(substr($bb, $pos + 6, $end - ($pos + 6)));
072        $elements = explode('[*]', $list);
073        $list = '<ul>';
074        for($i = 1; $i < count($elements); $i++) {
075            $list .= '<li>'.nl2br(rtrim($elements[$i])).'</li>';
076        }
077        $list .= '</ul>';
078        $end += 7;
079        $offset = $end;
080        $bb = substr_replace($bb, $list, $pos, $end - $pos);
081    }
082    $offset = 0;
083    while(strpos($bb, '[list=', $offset) !== false) {
084        $pos = strpos($bb, '[list=', $offset);
085        $pos2 = strpos($bb, ']', $pos + 6);
086        $type = substr($bb, $pos + 6, $pos2 - ($pos + 6));
087        $end = strpos($bb, '[/list]', $pos2);
088        if($end === false) break;
089        $list = trim(substr($bb, $pos2 + 1, $end - ($pos2 + 1)));
090        $elements = explode('[*]', $list);
091        $list = '<ol type="'.$type.'">';
092        for($i = 1; $i < count($elements); $i++) {
093            $list .= '<li>'.nl2br(rtrim($elements[$i])).'</li>';
094        }
095        $list .= '</ol>';
096        $end += 7;
097        $offset = $end;
098        $bb = substr_replace($bb, $list, $pos, $end - $pos);
099    }
100    $offset = 0;
101    while(($pos = strpos($bb, '[code]0[/code]', $pos);
102        if($end === false) break;
103        $code = substr($bb, $pos + 6, $end - ($pos + 6));
104        $strlen = strlen($code) + 13;
105        $code = '<pre>'.str_replace('', '', $code).'</pre>';
106        $end += 7;
107        $offset = $end - ($strlen - strlen($code));
108        $bb = substr_replace($bb, $code, $pos, $end - $pos);
109    }
110     
111    // Smilies
112    $bb = eregi_replace(';)', '<img src="smilies/wink.gif" alt=";)" border="0">', $bb);
113     
114    return $bb;
115}
116?></font></font></font>


Texte an die Funktion übergeben!

01<!--?php
02include("bbcode.php");
03 
04$message = "Ich bin ein [b]Fetter[/b] Text der auch einen [url=http://google.de]Link[/url] parat hat ;)";
05 
06echo $message; // Nachricht unformatiert
07echo "<br /-->";
08 
09$message = bbcode($message);
10 
11echo $message; //Formatierter Text
12?>


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

01<!--?php
02include("bbcode.php");
03 
04$message = "Ich bin ein [b]Fetter[/b] Text der auch einen [url=http://google.de]Link[/url] parat hat ;)";
05 
06echo $message; // Nachricht unformatiert
07echo "<br /-->";
08 
09$message = nl2br($message); //Hier wird der Text an den sogenannten Enter-Stellen (<br>) umgebrochen
10$message = bbcode($message); //Wir senden den Text an bbcode und lassen in arbeiten damit er den Text für uns umformatiert
11 
12echo $message; //Formatierter Text
13?>


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 ^^

Dieses Tutorial wurde von geschrieben "Lenox" bzw. "EuroCent aká Lenox"
Quelle : PHP-MYSQL Tutorial - BBCode | Alice Grafixx