credo di aver risolto in un modo decisamente più efficace utilizzando una preg_replace, dopo aver finalmente capito come usare le regexp. in effetti avevo già provato con le preg ma non riuscivo a farle funzionare con l'espressione "$key" perchè non mettevo la barra / iniziale "/$key".

il codice utilizzato per ricerca e sostituzione è il seguente.

Codice PHP:
$value preg_replace("/$key\\b/i","<a href=\"index.php?action=".strtolower($indirizzo)."\">".ucfirst($key)."</a> ",$value); 
per ovviare al problema delle parole all'interno di altre parole ("control" anziché "controller") basta mettere il delimitatore "\b" che indica Word Boundry, ovvero tradotto alla bell'e meglio parola singola/intera.

ciao!