Salve a tutti, il mio problema è questo.

Dato un testo vorrei evidenziare al suo interno ogni occorrenza di una data parola.

La prima soluzione che mi è venuta in mente era questa

Codice PHP:
$text=str_replace ($parola"<u>".$parola."</u>"$text); 
In questo modo cercando ad esempio "ali" mi vengono prese in considerazioni anche parole come spaziali ovali e così via.

Cercando in questo forum, ho scoperto che sarebbe meglio usare delle espressioni regolari.
Così dopo essermi documentato un po' ho provato a scrivere questo codice.

Codice PHP:
$temp="vola sulle ali degli ovali, questa è un'altra prova,ali, ciao ali e ali";
$nome="ali";
$regexp="^".$nome."[^0-9A-Za-z]|[^0-9A-Za-z]".$nome."$|[^0-9A-Za-z]".$nome."[^0-9A-Za-z]";
$temp=eregi_replace($regexp"<u>".$nome."</u>"$temp);
echo 
$temp
A prima vista sembra funzionare, soltato che mi stampa a video il seguente risultato:

vola sulleali degli ovali, questa è un'altra provaali ciaoalieali

Eliminandomi il carattere antecedente e quello precedente all'occorrenza trovata.

Qualcuno sa come ovviare al problema?

ho anche sentito parlare della funzione preg_replace() che dovrebbe essere più veloce..

Qualcuno mi spiega come funziona?