regexp

Pascal84
Invité n'ayant pas de compte PHPfrance

24 févr. 2005, 15:47

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 ?

Petit nouveau ! | 7 Messages

24 févr. 2005, 16:55

A tout hasard [1-68]{1} me parait bizarre

Pascal84
Invité n'ayant pas de compte PHPfrance

24 févr. 2005, 17:01

j'ai essayé en retirant {1} mais le message est identique!

ViPHP
ViPHP | 1380 Messages

24 févr. 2005, 17:04

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

Pascal
Invité n'ayant pas de compte PHPfrance

24 févr. 2005, 17:12

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

ViPHP
ViPHP | 1380 Messages

24 févr. 2005, 17:18

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)
ripat

Pascal
Invité n'ayant pas de compte PHPfrance

24 févr. 2005, 17:27

Dans ce cas il n'y a effectivement plus d'erreurs mais un numéro en 07 ... ou comportant 11 chiffres est accepté!

ViPHP
ViPHP | 1380 Messages

24 févr. 2005, 17:46

$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:
ripat

Pascal
Invité n'ayant pas de compte PHPfrance

24 févr. 2005, 18:14

Autant pour moi, j'avais oublié le ! devant "preg_match".
Maintenant ça marche!
1000 x merci Ripat je galèrais depuis ce matin!