Abbastanza banale, se la struttura è esattamente come l'hai scritta...
codice:
preg_match_all( "#\<a(.+?)\>(.+?)\</a\>#is" , $testo, $match );
$to_change = $match[2];
preg_match("#\<font(.+?)\>(.+?)\</font\>#is", $to_change[2], $match_second);
$testo = str_replace($match_second[2], "nuovo testo", $testo);