Hi,
also ich tüftel jetzt schon lange mit dem BBCode rum, ich suche ne Möglichkeit das innerhalb von [ code ] und [ /code ] der BB Code nicht geparst wird, außerdem soll darin der PHP Code gehighlightet werden!
Meine momentane Funktion schaut so aus und ist totale Alpha und völlig unsortiert, aber ich bekomm das nicht richtig hin:
PHP-Code:
function bbcode($text) {
//HTML Tags entfernen
$text=str_replace("<","<",$text);
$text=str_replace(">",">",$text);
//Code Tags suchen
$codes="/[code](.*?)[/code]/si";
preg_match_all($codes,$text,$code);
$text=nl2br($text); //Im restlichen Code <BR>'s einfügen
//Alle [CODE]'s higlighten
for($i=0;$i<count($code);$i++) {
$coder=$code[1][$i]; //$coder wird auf aktuellen Suchstring gesetzt
$coder=str_replace("<","<",$coder); //PHP Tags wiederherstellen
$coder=str_replace(">",">",$coder); //PHP Tags wiederherstellen
ob_start();
highlight_string($coder); //PHP Code highlighten
$coder=ob_get_contents();
ob_end_clean();
$text=str_replace(nl2br($code[1][$i]),$coder,$text); //PHP Code in Text einfügen
}
//Suchstrings für restlichen Code:
$search[]="/[url](.*?)[/url]/si";
$search[]="/[url=(.*?)](.*?)[/url]/si";
$search[]="/[mail](.*?)[/mail]/si";
$search[]="/[mail=(.*?)](.*?)[/mail]/si";
$search[]="/[b](.*?)[/b]/si";
$search[]="/[u](.*?)[/u]/si";
$search[]="/[i](.*?)[/i]/si";
$search[]="/[img](.*?)[/img]/si";
$search[]="/[uimg](.*?)[/uimg]/si";
$search[]="/[quote](.*?)[/quote]/si";
$search[]="/[code](.*?)[/code]/si";
//Replacestrings für restlichen Code:
$replace[]="<a href="1" target="_blank">1</a>";
$replace[]="<a href="1" target="_blank">2</a>";
$replace[]="<a href="mailto:1" target="_blank">1</a>";
$replace[]="<a href="mailto:1" target="_blank">2</a>";
$replace[]="<B>1</B>";
$replace[]="<U>1</U>";
$replace[]="<I>1</I>";
$replace[]="<img src="1" border=0>";
$replace[]="<img src="/bildmanager/pic.php?id=1" border=0>";
$replace[]="<table border=0 cellpadding=0 cellspacing=1 bgcolor="#CCCCCC"><tr><td bgcolor="#FFFFCC" style="text-align:left;" width="100%"><B><I> Code:</I></B><BR><HR width="100%" style="height:1px;"><BR>1</td></tr></table>";
$replace[]="<table border=0 cellpadding=0 cellspacing=1 bgcolor="#CCCCCC"><tr><td bgcolor="#DDEEFF" style="text-align:left;" width="100%"><B><I> Code:</I></B><BR><HR width="100%" style="height:1px;"><BR>1</td></tr></table>";
$text=preg_replace($search,$replace,$text); //Restlichen Code ersetzen
$text=parseText($text);
return $text;
}
function parseText($text) {
$text=str_replace("\","\\",$text);
return $text;
}