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. wink

Billets relatifs

4 Commentaire(s)

  1. Commenté par XdiZ le Saturday 20 March à 12:13

    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

  2. Réponse

    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
    - ...

  3. Commenté par Memelo le Thursday 07 April à 10:10

    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 !!!

  4. Réponse

    Au plaisirs d'avoir aidé. Il faudrait améliorer cette fonction pour prendre en charge les numéros internationaux. Peut-être un prochain billet. wink

  5. Commenté par ghost4life le Friday 09 March à 09:20

    A quand le prochain billet pour l'internationale smile ?

  6. Réponse

    C'est pas une mauvaise idée, j'ai déjà pas mal regardé pour un projet mais c'est plus que compliqué.

    Je vais pas avoir le choix de l'aborder d'ici quelques semaines, si j'arrive à trouver quelque chose qui fonctionne pour tous les pays je n'hésiterais pas à mettre à jour le billet ou en créer un nouveau wink

  7. Commenté par famillepauly le Monday 02 April à 22:20

    Bonjour,
    J'ai déjà travaillé dans une autre techno sur la création d'un annuaire international d'une grande entreprise. En fait il faut connaitre la provenance du numéro de téléphone. En fait pour chaque pays il faut créer un document de paramétrage avec le code Iso et le formatage du téléphone.
    Par exemple pour la france : FR => +33 #.##.##.##.##
    Pour la Suisse : CH => +41 ## ### ## ##
    Le traitement du numéro se fait en partant de la droite du téléphone puis on respecte le format en allant vers la gauche.
    Ainsi pour le téléphone 01 23 45 67 89, nous aurons :
    + 33 1 23 45 67 89

  8. Réponse

    Bonsoir,
    J'avais déjà lu quelques points sur le forum de developpez.com à ce sujet, du coup sur un site ou l'on ne demande pas le pays, aucun moyen de vérifier convenablement le format du numéro. Comme je l'ai déjà annoncé, je vais prochainement devoir me pencher sur le problème, je détaillerais donc ma solution (si j'y parvient !)

Ajouter un commentaire





Les commentaires sont validés manuellement afin d'éviter le spam.