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 :

que des chiffres OU que des lettres


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut que des chiffres OU que des lettres
    salutatous,

    j'ai un champ qui doit récupérer une valeur alphanumérique du type : 526 nom espèce

    je voudrais pouvoir vérifier que le visiteur ne saisisse pas uniquement la série de chiffre : 526

    et qu'il ne saisisse pas uniquement les lettres : nom espèce

    il faut absolument les chiffres et les lettres dans le champ

    j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $reference = $_POST['reference'];
     
    if (preg_match("/[0-9]/", $reference)) {
    	echo "que des chiffres<br/>";
     
    } elseif (preg_match("#^[A-Za-z]+$#",$reference)) { 
    	echo "que des lettres<br/>";
     
    } else {
    	echo "OK : chiffres + lettres<br/>";
    }
    j'ai aussi essayé avec :
    ereg("[a-zA-Z]",$nom)
    mais sans succès

    si je saisi que des chiffres, ça m'affiche bien "que des chiffres"
    si je saisi que des lettres, ça m'affiche bien "que des lettres"

    mais si je saisi les chiffres et les lettres, ça m'affiche "que des chiffres" !!!

    merci de vos lumières

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Salut,

    int ereg ( string $pattern , string $string [, array &$regs ] )

    Recherche dans la chaîne string les séquences de caractères qui correspondent au masque pattern, en tenant compte de la casse.

    Avertissement
    Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser.


    http://php.net/manual/fr/function.ereg.php


    Puisque
    j'ai un champ qui doit récupérer une valeur alphanumérique du type : 526 nom espèce
    je propose de faire une regex qui permettra, non pas de vérifier qu’il n’y a pas que des chiffres, ou pas que des lettres, mais directement qu’il y a précisément la succession voulue, c’est à dire des caractères en 3 groupes chiffres, lettres,lettres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $reference = $_POST['reference'];
     
    if (preg_match("#\A\s*[0-9]+\s+[a-zA-Z]+\s+[a-zA-Z]+\s*\z#", $reference))
        echo "OK : chiffres + lettres + lettres<br/>";

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    nickel ça fonctionne.

    en fait je veut uniquement vérifié le couple chiffres + lettres
    (par exemple : 526 Renard roux)

    j'ai donc mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("#\A\s*[0-9]+\s+[a-zA-Z]#", $reference)
    ça fonctionne mais je suis pas sûr que ce soit bien ça !
    tu peux me confirmer ?

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Non ça ne marche pas.

    Voici des cas qui ne marcheront pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reference = “536 jour bleu     4378 qoiqoi “
    $reference = “536 m u si q u edblllbrrrtfg“
    $reference = “   7 n 678 hululement“
    Il faut le \z à la fin pour obliger le matching à être vérifié sur toute la longueur de la chaîne testée, pas seulement une partie.

    Et au cas où le gars qui a écrit la chaine dans $reference a laissé trainé son doigt sur la barre d’espace et qu’il y a des blancs, inutiles mais non gênants , qui trainent à la fin , il faut que \z soit précédé de \s*

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    OK
    merci pour tous ces tuyaux

Discussions similaires

  1. lien avec des chiffres séparés par des points
    Par dominos dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2013, 18h36
  2. [MySQL] MySQL retourne des chiffres au lieu des noms avec accents
    Par wenijah dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/04/2012, 22h59
  3. Réponses: 6
    Dernier message: 10/05/2010, 09h58
  4. [E-03] Vérifier que tous les caractères sont des chiffres
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2009, 12h48
  5. [MySQL] Remplacer les chiffres à point par des chiffres à virgule
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/12/2008, 15h57

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