Page 1 sur 1

regexp

Posté : 24 févr. 2005, 15:47
par Pascal84
Bonjour,

J'ai un problème pour vérifier la saisie d'un numéro de téléphone dans un formulaire.
J'utilise une expression régulière :

if ( ! ereg("^0[1-68]{1}(([_- ][0-9]){2}){4}$",$champ4))
{
$message4.="Votre numéro de téléphone doit être constitué de 10 chiffres : "
.ereg_replace ("^0([1-68]{1})((([_- ][0-9]){2}){4})$","*",$champ4)
."<br>";
mais ca ne marche pas!
j'ai le message :
Warning: ereg(): REG_ERANGE in /home/users/p/pascal/www/WebConcept/formwebconcept.php3 on line 93

Warning: ereg_replace(): REG_ERANGE in /home/users/p/pascal/www/WebConcept/formwebconcept.php3 on line 96
Comment régler ce problème ?

Posté : 24 févr. 2005, 16:55
par Enisséo
A tout hasard [1-68]{1} me parait bizarre

Posté : 24 févr. 2005, 17:01
par Pascal84
j'ai essayé en retirant {1} mais le message est identique!

Posté : 24 févr. 2005, 17:04
par Ripat
Ce n'est pas ce qu'Enisseo veut dire. Range en anglais veut dire intervalle. Ce n'est pas le quantifieur {1} qui est en cause.

Donne des exemples de numéro à valider.

Posté : 24 févr. 2005, 17:12
par Pascal
Je veux valider les numéros français fixes ou mobiles du type:
01 12 13 14 15
02 ....
03...
04
05
06 ou
08 ....

Posté : 24 févr. 2005, 17:18
par Ripat
Dans ce cas ton intervalle du préfixe n'est pas correct. Si tu utilises ereg il te renvoie une erreur d'intervalle.

Essaye avec preg_match. Il ne devrait pas te donner d'erreur. Mais il me semble qu'il y a une erreur plus loin dans ton motif.

Essaye
preg_match('#^0[1-68](?:[-_ ][0-9]{2}){4}#', $champ4)

Posté : 24 févr. 2005, 17:27
par Pascal
Dans ce cas il n'y a effectivement plus d'erreurs mais un numéro en 07 ... ou comportant 11 chiffres est accepté!

Posté : 24 févr. 2005, 17:46
par Ripat
$champ4='07 21 25 21 54';
if (!preg_match('#^0[1-68](?:[-_ ][0-9]{2}){4}$#', $champ4)){
  echo 'pas bon';
}else{
  echo 'bon';
}
Chez moi retourne 'pas bon'. Ainsi que les numéros à 11 chiffres :wink:

Posté : 24 févr. 2005, 18:14
par Pascal
Autant pour moi, j'avais oublié le ! devant "preg_match".
Maintenant ça marche!
1000 x merci Ripat je galèrais depuis ce matin!