Alla fine ho trovato una soluzione che mi va quasi a genio, utilizzando preg_replace()

Codice PHP:
$temp="vola sulle Ali degli ovali, questa è un'altra prova,ali, ciao ali e ali";
$nome="ali";
$regexp="/^".$nome."\W|^".$nome."$|\W".$nome."$|\W".$nome."\W/i";
$temp=preg_replace($regexp"<u>$0</u>"$temp);
echo 
$temp
purtroppo resta sempre il problema che mi vengono presi in considerazione anche il carattere prima e quello dopo.

Per mircov

Se aggiungo uno spazio prima e uno dopo in automatico, commetterei un errore, in quanto in realtà quei caratteri potrebbero essere un qualsiasi altro simbolo, come ad esempio ? oppure ,