preg_match, espacer chaîne
Posté : 07 oct. 2006, 17:42
Bonjour,
Je voudrais formater un numéro de téléphone, saisi dans un formulaire, avant de l'insérer dans une table MySql.
Dans mon formulaire, mes visiteurs sont libres de saisir leur numéro sous la forme "XXXXXXXXXX" ou XX XX XX XX XX ou "XX-XX-XX-XX-XX", voire "XX.XX.XX.XX.XX"
Soit, par exemple, le numéro d'appel suivant : 01 42 92 81 00 (c'est celui de la présidence de la République pour les plaisantins
). Je voudrais l'enregistrer sous "01-42-92-81-00".
L'ancien code, assez crasseux (!), que j'utilisais était le suivant :
J'ai donc produit le code suivant :
Aurai-je oublié quelque chose ou le formatage est-il impossible avec une expression régulière ?
J'ai consulté l'excellent tutoriel de Ripat, mais il ne m'a pas éclairé.
Merci bien.
Cordialement,
A.
Je voudrais formater un numéro de téléphone, saisi dans un formulaire, avant de l'insérer dans une table MySql.
Dans mon formulaire, mes visiteurs sont libres de saisir leur numéro sous la forme "XXXXXXXXXX" ou XX XX XX XX XX ou "XX-XX-XX-XX-XX", voire "XX.XX.XX.XX.XX"
Soit, par exemple, le numéro d'appel suivant : 01 42 92 81 00 (c'est celui de la présidence de la République pour les plaisantins
L'ancien code, assez crasseux (!), que j'utilisais était le suivant :
<?php
$telephone = str_replace('-','', $telephone );
$telephone = str_replace('.','', $telephone );
$telephone = str_replace(' ','', $telephone );
{
$telephone = $telephone {0}.$telephone {1}.'-'.$telephone {2}.$telephone {3}.'-'.$telephone {4}.$telephone {5}.'-'.$telephone {6}.$telephone {7}.'-'.$telephone {8}.'-'.$telephone {9};
}
?>
A présent, j'essaie de me mettre aux expressions régulières.J'ai donc produit le code suivant :
<?php
$telephone=preg_replace("#^([\d]{2})([-. ])([\d]{2})([-. ])([\d]{2})([-. ]{1})([\d]{2})([-. ])([\d]{2})$#",'$1-$3-$5-$7-$9',$telephone);
?>
L'expression preg_replace fonctionne, sauf lorsque le numéro est saisi d'un bloc, c'est-à-dire sous la forme 0142928100 : il n'est pas formaté. J'ai essayé d'ajouter des "?" ou des {0,1} pour rendre les symboles [-. ] facultatifs, sans résultat...Aurai-je oublié quelque chose ou le formatage est-il impossible avec une expression régulière ?
J'ai consulté l'excellent tutoriel de Ripat, mais il ne m'a pas éclairé.
Merci bien.
Cordialement,
A.