Ho in input una stringa del genere:


cioè una serie di caratteri, alcuni di questi codificati con codifica unicode tramite entità HTML.
I numeri delle entità unicode sono in base 10 (non sono esadecimali!)

Devo decodificare la stringa in modo da ottenere i caratteri originali corrispondenti.
Ho provato la funzione html_entity_decode($stringa,ENT_QUOTES, 'UTF-8') del php, ma fallisce la conversione su alcuni caratteri (per la maggiorparte funziona bene!)

Per fare in modo che tutto funzioni bene, ho trovato questa efficace funzione per decodificare l'entità HTML di un singolo carattere:
codice:
function unichr($u) {
 return mb_convert_encoding($u, 'UTF-8', 'HTML-ENTITIES');
}

esempio di invocazione:

echo unichr("& # 258;"); // senza spazi tra la e commerciale e il pound, ovviamente

Adesso dovrei:
1) estrarre dalla stringa le entità (tipo: & # 258; senza spazi) con una espressione regolare *
2) dare l'entità in pasto alla funzione
3) sostituire le entità nella stringa originale con il loro carattere appena decodificato.

Qualcuno ha qualche idea per * ??

Ringrazio anticipatamente!