Comment vérifier un numéro de téléphone portable en HTML5 et PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2018-11-11 03:39:07
Thèmes : script - php - html5 - regex
Question

Dans le cadre d'un formulaire HTML, comment fait-on pour vérifier la bonne forme d'un numéro de téléphone portable, coté Client et Serveur, avec JS et PHP ?

Réponse

On peut vérifier la bonne forme d'un numéro de téléphone portable avec une expression régulière, une REGEX :

  • En HTML5 avec l'élément PATTERN d'un formulaire, coté client.
  • Coté serveur avec PHP.

Vous n'avez pas forcement besoin de JavaScript.

Un utilisateur qui saisit un numéro de téléphone pourrait le faire de différentes manières : avec ou sans espace entre les chiffres, avec un séparateur comme un "-" ou un ".".

06 01 02 03 04 0601020304 06-01-02-03-04 06.01.02.03.04

Voici le PATTERN correspondant à ces exemples :

pattern="0[1-68]([-. ]?[0-9]{2}){4}"

Exemple de formulaire HTML5 :

<form id="monFormulaire" method="post" action="#" role="form">
	<input type="text" value=""
	required="required" aria-required="true"
	pattern="0[1-68]([-. ]?[0-9]{2}){4}"
	title="Votre numéro de téléphone portable"
	spellcheck="false">
	<input type="submit" value="Envoyer">
</form>

Script PHP pour vérifier le numéro de téléphone coté serveur :

$telephone = "06.01-02.03 04";
if (preg_match("#^0[1-68]([-. ]?[0-9]{2}){4}$#", $telephone))
{
	$meta_carac = array("-", ".", " ");
	$telephone = str_replace($meta_carac, "", $telephone);
	$telephone = chunk_split($telephone, 2, "\r");
	echo $telephone;
}
else
	echo "$telephone n'est pas un numéro valide";

Le résultat sera : 06 01 02 03 04

  • preg_match vérifie que la variable $telephone respecte la REGEX
  • str_replace enlève les caractères - et . ainsi que les espaces.
  • chunk_split remet en forme le numéro de téléphone en ajoutant un espace tous les deux caractères.

Si vous voulez gérer les numéros à l’international, vous pouvez utiliser cette autre REGEX :

pattern="^(?:0|\(?\+33\)?\s?|0033\s?)[1-79](?:[\.\-\s]?\d\d){4}$"

http://html5pattern.com/Phones