Ich habe BB-Codes und gebrauche diese Funktion (Selbst gebastelt ^^):
function ParseBBCode($data)
{
$pattern = array(
"#\[B\]([^\[B\]]*)\[/B\]#i", // Fett
"#\[I\]([^\[I\]]*)\[/I\]#i", // Kursiv
"#\[U\]([^\[U\]]*)\[/U\]#i", // Unterstrichen
"#\[SUB\]([^\[\]]*)\[/SUB\]#is", // Tiefgestellt
"#\[SUP\]([^\[\]]*)\[/SUP\]#is", // Hochgestellt
//"#\[U\]([^\[\]]*)\[/U\]#is",
// PHP-BBCode
//'#\[php\](.*?)\[\/php\]#sei'
);
$replacement = array(
"<strong>\\1</strong>",
"<em>\\1</em>",
"<span style='text-decoration: underline;'>\\1</span>",
"<sub>\\1</sub>",
"<super>\\1</super>",
// PHP-BBCode
//"'<div class=\"php\">'.highlight_string(stripslashes('$1', true).'</div>'"
);
$data = preg_replace($pattern,$replacement,$data);
//$data = preg_replace_callback('#\[php\](.*?)\[\/php\]#si',array(&$this,"ParsePHPBBCode",$data);
return $data;
}
Funktioniert eigentlich auch schön und gut. Nur tritt das Problem auf, dass manche Treffer gar nicht getroffen werden.
So sind zum Beispiel
*hier* die ersten 5 Zeilen Fett, die nächsten 5 nicht, dann wieder die letzten 2 Fett geschrieben.
*hier* hingegen sind die ersten 2 Zeilen Fett, dann kommen 3 Zeilen auf die der RegExp scheinbar nciht zutrifft
Hat wer ne Idee was isch falscht gemacht hab?