BBCode Formatierung PHP
BBCodeTutorials » PHP/MySQL Tutorials » BBCode
BBCode - Tutorial
Hier erklre ich euch in kurzen Schritten wie man einen BBCode aufbauen knnte!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 fr 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 mchte :)
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 ...