$text=preg_replace("~[color=([0-9A-F]{6})](.*?)[/color]~i","<span style="color:#\1">\2</span>",$text);
Besser:
$text=preg_replace("~[color=([0-9a-fA-F]{6})](.*?)[/color]~i","<span style="color:#\1">\2</span>",$text);
Da bei der Farbangabe auch Kleinbuchstaben erlaubt sind.
Stefan