expression regulieres

Eléphant du PHP | 148 Messages

26 juil. 2005, 13:35

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 juil. 2005, 13:38

ça marche pas ?
Message d'erreur ? oui/non
Tests déjà effectués ? oui/non - mettre le code utilisé et les résultats
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1353 Messages

26 juil. 2005, 13:38

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

Mammouth du PHP | 19672 Messages

26 juil. 2005, 13:44

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>";
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 148 Messages

26 juil. 2005, 13:47

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

Mammouth du PHP | 1353 Messages

26 juil. 2005, 13:49

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

Mammouth du PHP | 19672 Messages

26 juil. 2005, 13:51

Regarde bien ce que j'ai mis : !ereg au lieu de ereg
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 148 Messages

26 juil. 2005, 13:56

merci beaucoup
mais que veux dire "les points ne sont pas échappés???
sinon merci ca marche impeccable

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 juil. 2005, 13:58

ca marche impeccable
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 148 Messages

26 juil. 2005, 13:58

ah ok ok c'est bon je viens de lire quelque chose
merci beaucoup
Modifié en dernier par manu49 le 26 juil. 2005, 13:59, modifié 1 fois.

Mammouth du PHP | 19672 Messages

26 juil. 2005, 13:58

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 : \.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 148 Messages

26 juil. 2005, 14:57

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

Mammouth du PHP | 1353 Messages

26 juil. 2005, 15:01

tu veux savoir si la chaine est vide ?
Pour moi tu peux tester en faisant if($chaine==""), non ?

Eléphant du PHP | 148 Messages

26 juil. 2005, 15:16

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

Mammouth du PHP | 1353 Messages

26 juil. 2005, 15:42

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.