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

1 Commentaire(s)

  1. Commenté par XdiZ le samedi 20 mars à 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
    - ...

Ajouter un commentaire