Dopo altri mille tentativi ho scritto questo codice
Codice PHP:
<?
$temp="ALi vola sulle Ali degli ovali, questa è un'altra prova,ali, ciao ali e ali";
echo $temp."
";
$nome="ali";
$regexp="/^".$nome."\W|^".$nome."$|\W".$nome."$|\W".$nome."\W/ie";
$temp=preg_replace($regexp, "substr('$0',0,1).'<u>'.substr('$0',1,strlen('$0')-2).'</u>'.substr('$0',strlen('$0')-1)", $temp);
echo $temp;
?>
Solo che oltre ad essere un casino, funziona correttamente solo se la parola si trova all'interno della frase e non quando si trova come prima parola o come ultima 
Ormai sono disperato.. non so più cosa fare