Nettoyer et afficher un numéro de téléphone en PHP
Voici une fonction assez simplement permettant dans un premier temps de vérifier un numéro de téléphone (après avoir retiré tous les caractères non alphanumériques) puis de formater un affichage.
Vous pouvez l'utiliser avant d'entrer le numéro dans la base de données (après le traitement par formulaire) ou par exemple afficher le numéro sur votre site sous la forme "00-00-00-00-00". (Séparateur modifiable)
En paramètres de la fonction le numéro de téléphone et optionnel le séparateur qui sera affiché tous les deux caractères numériques.
<?php # Nettoyage/affichage d'un numéro de téléphone function clean_display_phone($nbr, $sep=false) { $nbr = ereg_replace('[^0-9]', '', $nbr); if(strlen($nbr) != 10) return false; else { if($sep) { for($i=0;$i<5;$i++) $nbr_array[] = substr($nbr, $i*2, 2); $nbr = implode($sep, $nbr_array); return $nbr; } else return $nbr; } }
Voici quelques exemples d'utilisation.
<?php // Numéros de téléphone suite à un formulaire par exemple $num_tel_bon = '10.45.86.12.34'; $num_tel_mauvais = '084230246875123'; # Test Validité if(clean_display_phone($num_tel_bon)) // Affiche "Ok" echo 'Ok'; if(clean_display_phone($num_tel_mauvais)) // Pas de retour echo 'Ok'; # Affichage echo clean_display_phone($num_tel_bon); // Affiche "1045861234" echo clean_display_phone($num_tel_bon, '-'); // Affiche "10-45-86-12-34"
N'hésitez pas à me faire un retour ou encore me proposer des améliorations. 
Cette fonction marche bien pour les numéros français, mais pour les numéros internationaux avec le suffixe, elle ne fonctionne plus ...
exemple : +33(0)3.44.55.66.77
En effet mais le soucis c'est que le format peux être de différentes formes :
- Avec ou sans le zéro
- Avec ou sans les parenthèses
- ...
Bonjour,
Je m'en suis servie pour nettoyer une vielle base de données ou les internautes avaient rentrées des valeurs comme :
Tél. & Fax : 04.70.00.00.00
Et ça m'a tout cleaner super proprement !
Je suis épatée.
Vraiment merci merci beaucoup.
Je vais la garder précieusement !!!
Au plaisirs d'avoir aidé. Il faudrait améliorer cette fonction pour prendre en charge les numéros internationaux. Peut-être un prochain billet.