per me sembra un ottimo lavoro.
non ho capito la differenza in questo:
$valore= str_replace("–", "-", $valore);
cioè come ottieni il primo trattino
ciao