IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

espace dans un champs de formulaire


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut espace dans un champs de formulaire
    bonsoir, j'ai un soucis sur un formulaire , voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!ereg("^[A-Zéeaa-z]{2,20}$", $nom))
    je voudrai que l'on puisse aussi accépter les "espaces")

    pouvais vous me corriger s'il vous plait ?

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    un espace c'est [:space:] ou \s
    et ereg() est obsolète.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    merci mais alors par quelle code puis je le remplacer et comme inserer le \s

    merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    Citation Envoyé par hades33 Voir le message
    merci mais alors par quelle code puis je le remplacer et comme inserer le \s

    merci
    Utilisez plutôt les expresions régulières PCRE : preg_match()
    La fonction ereg ainsi que ses soeurs sont obsolètes depuis la version 5.3 et sont en passe d'être supprimées pour la version 6 de PHP.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    ok
    bon j'ai ca comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!preg_match('#[^~"@}{& <> *+/]#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");
    ALORS je retourne le probléme a l envers comment empecher qu'il y ait des chiffres dans mon champs du formulaire, j'ai essayer plusieur trucs masi ca ne fonctionne pas

    help me ^^

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    Citation Envoyé par hades33 Voir le message
    ok
    bon j'ai ca comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!preg_match('#[^~"@}{& <> *+/]#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");
    ALORS je retourne le probléme a l envers comment empecher qu'il y ait des chiffres dans mon champs du formulaire, j'ai essayer plusieur trucs masi ca ne fonctionne pas

    help me ^^
    Pourriez-vous préciser ce que vous souhaitez comme format, au juste ? Peut-être que vous n'avez même pas besoin d'utilisez les expresions régulières. Avez-vous, par exemple, jeté un oeil aux fonctions ctype [http://fr.php.net/manual/fr/ref.ctype.php.

    Si tout ce que vous voulez c'est empêcher les chiffres, votre expression régulière pourrait s'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (preg_match('#[:digit:]#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    je souhaite empecher l'ecriture dans mon formulaire de toutes inscriptions autres que a-zA-Zéàeôîûâà et 'un espace' des fois qu'il y ai des noms de famille en plusieurs mots ..

    merci

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    Essayez ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    setLocale(LC_CTYPE, 'FR_fr.UTF-8');
    if (!ctype_alpha($nom)) {
        // erreur
    }
    Je n'ai pas testé mais ça doit convenir pour prendre les lettres a-z, A-Z ainsi que les accents français

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    et les espaces ??

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    J'ai oublié que les noms peuvent également avoir des espaces. Sans réfléchir, l'idée qui me vient en tête c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    setLocale(LC_CTYPE, 'FR_fr.UTF-8');
     
    $only_french_letters = create_function('$a, $b', 'return $a && ctype_alpha($b);');
     
    if (!array_reduce(explode(' ', $nom), 'only_french_letters')) {
        // erreur
    }
    Avec PHP 5.3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    setLocale(LC_CTYPE, 'FR_fr.UTF-8');
     
    $only_french_letters = array_reduce(explode(' ', $nom), function($a, $b) {
        return $a && ctype_alpha($b);
    });
     
    if (!$only_french_letters) {
        // erreur
    }

    Aux erreurs près ...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    je recois se message :

    Parse error: syntax error, unexpected T_FUNCTION in

    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $only_french_letters = array_reduce(explode(' ', $nom), function($a, $b) {
        return $a && ctype_alpha($b);
    });
    c sympa mais je prefererai avec le prereg qui m'est plus familier si c'est possible ^
    merci

  12. #12
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    La version de mseye répond à ta question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (preg_match('#[:digit:]#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");

    Ci-dessous, c'est un exemple car mseye en a donné une version nettement plus clean. Mais si ça peut t'aider à mieux comprendre les regex - donc avec min/MAJ, accents, espace et tiret acceptés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pcre_pattern = "#[a-zéèàêâùïüëA-Z -][^0-9]#";
     
    if (! preg_match($pcre_pattern, $nom )) {
    die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");
    }
    Et une petite remarque :
    - avec ton "die", il ne risque pas de recommencer :-)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    j'ai essayer ton code et quand je rentre par exemple "francois ferdinand 78"
    il l'accepte , or, je ne souhaite pas les chiffres dans un champs noms ^^
    ton code je peux par contre l utiliser pour un champ adresse

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Par défaut
    Bonjour,

    C'est normal que le second bout de code débouche sur une syntax error car j'ai précisé que cette syntaxe (fonction anonyme) n'est valable qu'à partir de la version 5.3 de PHP.

    Cependant, la première version avec create_function devrait marcher pour une version antérieure de PHP.

    Je teste pas forcément le code car je réponds en vrac mais l'idée c'est juste de vous mettre sur une piste.

    Citation Envoyé par hades33 Voir le message
    je recois se message :

    Parse error: syntax error, unexpected T_FUNCTION in

    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $only_french_letters = array_reduce(explode(' ', $nom), function($a, $b) {
        return $a && ctype_alpha($b);
    });
    c sympa mais je prefererai avec le prereg qui m'est plus familier si c'est possible ^
    merci

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 79
    Par défaut
    Et je vous en remercie , mais je n'ai que des bases limitées en php et les fonctions "ereg" ou "prereg" me sont bcp plus familières.
    Donc ,soit je recois un code valide que je ne connais pas ou on m'aiguille sur el code que je trouve plus agreable a regarder

    En tous cas merci de l'effort et j'espere arriver a parvenir à la solution
    avec votre aide

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!preg_match("^[a-zçèéë ]{2,20}$", $nom))
    rajoute éventuellement d'autres caractères autorisés ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par hornetbzz Voir le message
    La version de mseye répond à ta question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (preg_match('#[:digit:]#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");
    Moi j'ai autant faire plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (preg_match('#\d#', $nom))
    	 die (" Le nom  que vous avez saisie n'est pas au bon format , veuillez recommencer ");

Discussions similaires

  1. Calcul dans un champ de formulaire
    Par Marmouz dans le forum Access
    Réponses: 6
    Dernier message: 07/02/2006, 12h55
  2. [HTML] formulaire gérer les espaces dans un champs texte
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 15h17
  3. saisie obligatoire dans un champs de formulaire
    Par Didi17 dans le forum Access
    Réponses: 2
    Dernier message: 28/10/2005, 04h51
  4. Comment insérer un espace dans un champ
    Par davyd dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/03/2005, 11h00
  5. remplacer des espaces dans un champ par des zero
    Par yeep dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2004, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo