Ya he resuelto el problema.
Por si alguien le interesa, la solución es la siguiente:
Código PHP:
$code = preg_replace("/\[b\](.+)\[\/b\]/si", "<strong>$1</strong>", $code);
Había que poner una "s":
preg_replace("/\[b\](.+)\[\/b\]/
si", "<strong>$1</strong>", $code);
Y así con todos.
Un saludo.