Hi!
$bb = preg_replace('/\[code]+).*\](.*)\[\/code\]/', '<span id="$1">$2</span>', $bb);
Nochmal gefragt, weil du sie ignoriert hast: Welche Aufgabe hat deiner Meinung nach das + und die schließende Klammer danach? (Und das .*] danach?)
Worauf genau soll der Ausdruck greifen?
[ code]
<?php
echo "asd";
?>
[ /code]
(Leerzeichen hinzugefügt, damit das Forum die [ code]s nicht frisst.
Du möchtest also /\[code](.\*)\[\/code]/ suchen, dann schreib das doch so.
Lo!