amigo, lo que pasa... es que no debes colocar la función como tal, sino en una cadena...
para ser evaluada!!
y tu le colocaste la función como tal... ejecutada, demás estas doble-escapando las barras!! (eso también va mal)
pon atención... hasta necesita un
return ... ojo!
Código PHP:
$texto = preg_replace("/\[CLAVE\](.+?)\[\/CLAVE\]/ise","return funcionUper('\1')", $text);
y ahora?