Con str_replace y un caracter "temporal" sería más fácil, pero necesitas asegurarte de que éste no aparezca en la cadena; conviertes todos los cierres de paréntesis al temporal, después las aperturas a cierres y, finalmente, los temporales a aperturas.... muy claro, verdad?
Código PHP:
Ver original// Usando caracter nulo:
$temp = "\x00";
$busca = array(')', '(', $temp); $reemplaza = array($temp, ')', '(');
$cadena = ')CASA(';
echo str_replace($busca, $reemplaza, $cadena); // (CASA)