Prueba con esto
Código PHP:
<?
$titulo = ("asd (asd asd) palbaeñefsd dfgagsfdg");
$titulo= preg_replace_callback('/\b[\wñ]+\b/',function ($m) {return strtoupper($m[0][0]).substr($m[0],1);}, $titulo);
echo $titulo; //Devuelve Asd (Asd Asd) Palbaeñefsd Dfgagsfdg
?>
pues esta testeado y no es inseguro como la funcion que encontraste.