Hallo,
ich sitze derzeit an einem BBCode parser. Hier erstmal der Code:
PHP-Code:
<?php
function replace_bbcodes($content) {
$_bbcodes = array('#\[b\]#is' => '<span style="font-weight:bold">',
'#\[/b\]#is'=> '</span>',
'#\[i\]#is' => '<span style="font-style:italic">',
'#\[/i\]#is'=> '</span>',
'#\[u\]#is' => '<span style="text-decoration:underline">',
'#\[/u\]#is'=> '</span>',
'#\[img=(.+?)\]#is' => '[img]\\1[/img]',
'#\[color=(.+?)\](.+?)\[/color\]#is' => '<span style="color: \\1">\\2</span>',
'#\[url=(.+?\](.+?)\[/url\]#is' => '[url="redirect.php?url=\\1"]\\2[/url]',
'#\[size=(.+?\](.+?)\[/size\]#is' => '<span style="font-size:\\1">\\2</span>'
);
$content = preg_replace(array_keys($_bbcodes), array_values($_bbcodes), $content);
echo $content;
}
}
$text = '[ b]Das ist mal[ i] ein Test[ /i][ /b]
Toll oder? [ url=http://www.eye.de][ img=http://sag-ich-dir.net/pics/eye.gif][ /url]';
replace_bbcodes($text);
?>
(Leerzeichen absichtlich wegen dem Board eingefügt..)
Als Fehlermeldung erhalte ich:
Code:
Warning: preg_replace() [function.preg-replace]: Compilation failed: missing ) at offset 25 in ...\lib\classes\class_board.inc.php on line 19
Warning: preg_replace() [function.preg-replace]: Compilation failed: missing ) at offset 27 in ...\lib\classes\class_board.inc.php on line 19
Das, was mir der Parser zurückgibt ist:
Code:
<span style="font-weight:bold">Das ist mal<span style="font-style:italic"> ein Test</span></span>
Toll oder? [\url=http://www.eye.de]
[\/url]
(die \ absichtlich wegen dem BBCode dieses Boardes eingefügt)
Meine Frage nun, was ist das für ein Fehler und wie kann ich ihn beheben?
(Die Zeilenangaben stimmen nicht, da die Funktion in einer Klasse liegt. Allerdings zeigt die Zeile auf die Funktion preg_replace(...))