$bb = preg_replace('/[color=([^ ]+).*](.*)[/color]/', '<span style="color:$1;">$2</span>', $bb);
$bb = preg_replace('/[code ]+).*](.*)[/code]/', '<span id="$1">$2</span>', $bb);... solltest du sehen, dass du zu viel entfernt hast, auch wenn dir die Bedeutung der Regexp-Zeichen noch nicht klar ist.
Ich bin mir nicht ganz sicher wo du das Beispiel jetzt her hast, aber wie mir scheint frisst dieses Forum code stücke ^^
$bb = preg_replace('/\[color=([^ ]+).*\](.*)\[\/color\]/', '<span style="color:$1;">$2</span>', $bb);
$bb = preg_replace('/\[ code=([^ ]+).*\](.*)\[\/code \]/', '<span>$1</span>', $bb);
Und nochmal ohne code markierung von selfhtml
$bb = preg_replace('/[color=([^ ]+).*](.*)[/color]/', '<span style="color:$1;">$2</span>', $bb);
$bb = preg_replace('/[ code=([^ ]+).*](.*)[/code ]/', '<span>$1</span>', $bb);
Auch mit leerzeichen zur verdeutlichung, und man erkennt eben schön die absolute gleichheit...
l.g.