Ahh, como no me di cuenta, muchas gracias amigo!, estaba usando mal los argumentos era el $string antes de $lenguaje,..
 
Ahora me surge otro problema,..  
La funcion devuelve el texto.. 
[ code]<? echo "hola"; ?>[ /code] (sin espacios) 
Donde <? ...... ?> esta coloreado,.. mas muestra el bbcode,.. por que sera esto?,.. sera algun problema de la expresion regular en si?
 
EDIT: solucionado con $matches[1]; 
Muchas gracias 
pateketrueke!! :D 
Saludos