Je vous partage un code que j'avais développé pour connaitre le prix d'un numéro et savoir son "type" (numéro vert, indigo, etc...)
$num='0826456789';//numéro à analyser, sans espace entre chaque chiffre
// - le 01 est l’indicatif de la région parisienne
// - le 02 celui de la région nord-ouest de la France métropolitaine ainsi que de La Réunion et de Mayotte
// - le 03 a été attribué au nord-est de l’Hexagone
// - le 04 au Sud-Est, dont la Corse
// - le 05 au sud-ouest du pays et aux autres départements, collectivités et territoires d’outre-mer.
$ArrNumerosSpeciaux=[
//Les prix sont succeptibles de changer tout les 1er de chaque mois
"0800"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0801"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0802"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0803"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0804"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0805"=>["prix"=>"100% gratuit","type"=>"Numéro vert"],
"0806"=>["prix"=>"Service Gratuit + Prix Appel","type"=>"Numéro gris"],
"0807"=>["prix"=>"Service Gratuit + Prix Appel","type"=>"Numéro gris"],
"0808"=>["prix"=>"Service Gratuit + Prix Appel","type"=>"Numéro gris"],
"0809"=>["prix"=>"Service Gratuit + Prix Appel","type"=>"Numéro gris"],
"0820"=>["prix"=>"0,11€ les 56 premières secondes puis 0,12€ TTC/min maxi (7,20€/Heure)","type"=>"Numéro indigo"],
"0821"=>["prix"=>"0,11€ les 56 premières secondes puis 0,12€ TTC/min maxi (7,20€/Heure)","type"=>"Numéro indigo"],
"0825"=>["prix"=>"0,11€ les 45 premières secondes puis 0,15€ TTC/min maxi (9€/Heure)","type"=>"Numéro indigo"],
"0826"=>["prix"=>"0,11€ les 45 premières secondes puis 0,15€ TTC/min maxi (9€/Heure)","type"=>"Numéro indigo"],
"0836"=>["prix"=>"0,12€ TTC/min maxi (7,20€/Heure)","type"=>"Numéro indigo"],
"0884"=>["prix"=>"0,15€ TTC/min maxi (9€/Heure)","type"=>"Numéro indigo"],
"0890"=>["prix"=>"0,12/0,15€ TTC/min maxi (9€/Heure)","type"=>"Numéro indigo"],
"0870"=>["prix"=>"Selon opérateur","type"=>"Voix sur réseau IP"],
"0871"=>["prix"=>"Selon opérateur","type"=>"Voix sur réseau IP"],
"0873"=>["prix"=>"Selon opérateur","type"=>"Voix sur réseau IP"],
"0874"=>["prix"=>"Selon opérateur","type"=>"Voix sur réseau IP"],
"0875"=>["prix"=>"Selon opérateur","type"=>"Voix sur réseau IP"],
"0836"=>["prix"=>"0,56€ TTC/min maxi","type"=>"Numéro surtaxé"],
"0891"=>["prix"=>"0,30€ TTC/min maxi","type"=>"Numéro surtaxé"],
"0892"=>["prix"=>"0,45€ TTC/min maxi","type"=>"Numéro surtaxé"],
"0893"=>["prix"=>"0,75€ TTC/min maxi","type"=>"Numéro surtaxé"],
"0897"=>["prix"=>"0,60€/appel","type"=>"Numéro surtaxé"],
"0898"=>["prix"=>"1,20€/appel","type"=>"Numéro surtaxé"],
"0899"=>["prix"=>"1,35€ TTC/appel puis 0,34€/min","type"=>"Numéro surtaxé"],
];
$DeuxPremiers=substr($num,0,2);
$QuatrePremiers=substr($num,0,4);
$MiseEnForme_espaces=preg_replace("#([0-9]{4})([0-9]{3})([0-9]{3})#","$1 $2 $3",$num);
$MiseEnForme_points=preg_replace("#([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})#","$1.$2.$3.$4.$5",$num);
if(preg_match("#^0([1-5]|9)#",$DeuxPremiers)){
$final="Téléphone fixe: $MiseEnForme_points";
} elseif(preg_match("#^0[6-7]#",$DeuxPremiers)){
$final="Tel portable: $MiseEnForme_points";
} elseif(preg_match("#^08#",$DeuxPremiers)){
if(isset($ArrNumerosSpeciaux[$QuatrePremiers]))
$final="Numéro spécial: $MiseEnForme_espaces (<small>{$ArrNumerosSpeciaux[$QuatrePremiers]['type']}, Prix: {$ArrNumerosSpeciaux[$QuatrePremiers]['prix']}</small>)";
else
$final="Numéro spécial: $MiseEnForme_espaces";
} else {
$final="Téléphone: $num, aucune correspondance trouvée.";
}
echo $final;