Código PHP:
    function funcionUper($text){
$text = strtoupper($text);
return $text;
}
///////
function bbCode($texto){
// Funciona 
$texto = preg_replace("/\\[b\\](.+?)\[\/b\]/is",'<b>\1</b>', $text);
// y Eso es lo que no funciona, es decir no toma a funcionUper como una función
$texto = preg_replace("/\\[CLAVE\\](.+?)\[\/CLAVE\]/is",funcionUper('\1'), $text);
return $texto;
} 
    
  Abrá una forma de hacer funcionar funcionUpder dentro del preg_replace?, alguna idea? e  probado con otros métodos pero siempre tienen su contra, como por ejemplo. 
 Código PHP:
    //...
            $clave = preg_match("/\\[CLAVE\\](.+?)\[\/CLAVE\]", $text);
            if($clave ){
            $nuevo = preg_replace("/\(\((.+?)\)\)/is",'\1', $text);
            $texto = funcionUper($nuevo);
            } 
return $texto; 
    
  Pero cuando hago eso si encuentra algo con [clave], la funcion coge a todo el texto =S.
La idea es reemplazar todos los textos que contengan [CLAVE]unaclave[/CLAVE] por la clave en mayúsculas.