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