Page 1 sur 2
expression regulieres
Posté : 26 juil. 2005, 13:35
par manu49
bonjour,
j'ai un petit soucis j'ai chercher pour effectuer une expression reguliere pour tester si un utilisateur rentrait bien un numero de tel sous la forme 02.41.41.41.26
et j'ai mis ca:
if (ereg("([0-9]{2,2}[.][0-9]{2,2}[.][0-9]{2,2}[.][0-9]{2,2}[.][0-9]{2,2})?", $cava['numerodetel']))
$message .= "Le numéro de téléphone n'est pas correct le format est --.--.--.--.--.-- "
. " non-alphabétiques : "
. "<BR>";
mais ca marche pas
savez vous pourquoi??
MERCI BEAUCOUP
Posté : 26 juil. 2005, 13:38
par mere-teresa
ça marche pas ?
Message d'erreur ? oui/non
Tests déjà effectués ? oui/non - mettre le code utilisé et les résultats
Posté : 26 juil. 2005, 13:38
par guilt92
désolé cela n'est pas une réponse mais :
Ne serait il pas plus simple et plus fiable lors de la saisie de son numéro de téléphone de faire 5 champs de saisie de deux caractères (un champ de saisie par numéro) plutot qu'ils doivent lui même mettre des "." ?
Posté : 26 juil. 2005, 13:44
par Cyrano
Les points ne sont pas échappés et donc remplacent n'importe quel caractères. propositionde corrigé:
if (!ereg("^([0-9]{2,2}\.){4,4}([0-9]{2,2})$", $cava['numerodetel']))
{
$message .= "Le numéro de téléphone n'est pas correct le format est --.--.--.--.--.-- "
. " non-alphabétiques : "
. "<BR>";
}
re
Posté : 26 juil. 2005, 13:47
par manu49
en fait le message renvoyé est celui que je met:
le numero n'est pas correct
donc le code est valide mais il n'est pas correct car quand je rentre un numero correct il m'affiche quand meme cela donc l'expression doit etre fausse ou bien autre chose
pour l'idée de faire plusieurs case je ne trouve aps cela judicieux car je dois recupérer ce numéro pour le mettre dasn une base de donnée donc si je dois remplir quatre champs: galere
merci
Re: re
Posté : 26 juil. 2005, 13:49
par guilt92
de faire plusieurs case je ne trouve aps cela judicieux car je dois recupérer ce numéro pour le mettre dasn une base de donnée donc si je dois remplir quatre champs: galere
merci
tu peux tout a fait "regrouper" les 4 champs avant de les inscrire dans la base et ainsi ne faire qu'un seul champ.
Mais bon si la solution ne te convient pas tant pis...
Posté : 26 juil. 2005, 13:51
par Cyrano
Regarde bien ce que j'ai mis : !ereg au lieu de ereg
re
Posté : 26 juil. 2005, 13:56
par manu49
merci beaucoup
mais que veux dire "les points ne sont pas échappés???
sinon merci ca marche impeccable
Re: re
Posté : 26 juil. 2005, 13:58
par mere-teresa
re [résolu]
Posté : 26 juil. 2005, 13:58
par manu49
ah ok ok c'est bon je viens de lire quelque chose
merci beaucoup
Posté : 26 juil. 2005, 13:58
par Cyrano
le point est un caractère réservé dans les expressions POSIX ; dont pour avoir le point dans une chaîne, il faut l'échapper avec un backslashe : \.
re
Posté : 26 juil. 2005, 14:57
par manu49
desole de vous redemandez quelque precision
mais je souhaite que l'utilisateur rentre un numero ou rien
habituellment on place un ? a la fin de l'expression mais la je ne vois pas comment faire et mes tentatives sont vaines
merci
Posté : 26 juil. 2005, 15:01
par guilt92
tu veux savoir si la chaine est vide ?
Pour moi tu peux tester en faisant if($chaine==""), non ?
re
Posté : 26 juil. 2005, 15:16
par manu49
oui je veux dire que la chaine peut etre vide mais pour allier ce test avec le precedent si on fait ou ($chaine==""), dasn le if cela est contradictoire avec le test d'avant non??
J'ai essayé et ca n'a pas l'air de marcher
Posté : 26 juil. 2005, 15:42
par guilt92
Ca dépend, par exemple le test d avant est chargé de vérifier le "bon format de la chaine". Tu peux par exemple crée une variable $bon_format que tu mets d abord a false puis tu fais :
Si la chaine n est pas vide tu testes le format. Si il est bon $bon_format=true;
Si le format est bon ou que la chaine est vide ca passe.
Sinon ca casse.