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 :

vérification nombre [RegEx]


Sujet :

Langage PHP

  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut vérification nombre
    bonjour,

    Comment puis-je tester que les éléments d'un input texte sont des nombres du style : 542 ou 693.54 ou meme 541,52

    Dois-je m'amuser à prendre des sous-chaines et tester chacune d'entre elles ou existe-t-il un autre moyen de le faire ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je ne l'ai pas fait, mais cela est certainement aisé avec un regex

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    La question à se poser c'est est-ce vraiment indispensable...

    Car moi je voudrais bien le faire dans le cas certains utilisateurs pourraient saisir des caractères au lieu de chiffres...

    Sinon je vois pas comment le faire...Pour les regex j'y connais rien moi

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    regardes du coté de floatval sur php.net, il existe aussi intval, strval is_objet is_array .. j'en passe et des emilleurs


    bye

  5. #5
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Je dirais avec ça:

    http://fr2.php.net/manual/fr/function.gettype.php

    comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    $Var = str_replace(",",".",$Var);
    if ((gettype($Var)=="integer") || (gettype($Var)=="double")) {
      echo "c'est bon";
    }else{
      echo "C'est pas bon";
    }
    ?>

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ou ça ?
    http://fr2.php.net/is_numeric
    par contre ca gérera peut etre pas le . et la , mais juste un des deux ?

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Pas si évident, ce problème de format mixte. Voici une solution possible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    function checkValeur($v){
      // on balance les espaces éventuels.
      $v = str_replace (' ', null, $v);
     
      // détection du format type ddddd.dd ou ddd,ddd.dd ou .dd
      if(is_numeric($v) || preg_match('#^(?:\d{1,3}(?:,\d{3})*|\d+)\.\d+$#', $v)){
        return str_replace(',', null, $v);
     
      // détection du format type ddd.ddd,dd  ddddd,dd et conversion en format dddddd.dd
      } elseif (preg_match('#^(?:\d{1,3}(?:\.\d{3})*|\d+),\d+$#', $v)){
        return str_replace(array('.', ','), array(null, '.'), $v);
     
      // si autre format
      } else {
        return 'format inconnu';
      }
    }
     
    // tableau d'essai
    $a = array(
      '22000.25',
      '22.000,25',
      '22.00.0,25',
      '22.000',
      '22,55',
      '0,55',
      '22 000.25',
      '22000.25',
      '2.20.00',
      '22.55',
      '0.55',
      '.55'
    ); 
     
    foreach($a as $k=>$v){
      echo $v.' --> '.checkValeur($v).'<br />';
    }
    Cas indéterminé: 123.456 impossible à résoudre car valable dans les deux formats.

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Merci à vous tous pour vos indications...

    J'ai testé chacune des solutions proposées et j'ai donc choisi le is_numeric qui correspond plus à mes attentes et qui fonctionnent pour tous les cas possibles

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    avec . ou , ? c est cool ca

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    dans la FAQ il y a aussi des exemples de tests de valeurs :
    http://php.developpez.com/faq/?page=...aisie_exemples

  11. #11
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Citation Envoyé par siddh
    avec . ou , ? c est cool ca
    Avec les deux j'ai fait un str_replace pour la virgule et donc j'obtiens toujours une valeur avec un point donc c'est bon pour le coté décimal...

    je voulais juste éviter que 'lutilisateur saisisse un chaine de caractère, ce qui ne conviendrait pas...(on sait jamais ca peut arriver qu'ils ne savent pas lire )

    et le reste c'est juste un is_numeric et c'est tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/05/2011, 21h41
  2. vérification des nombres primaires
    Par fahouma dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 16/12/2009, 15h42
  3. Vérification du nombre de fichier uploadé
    Par leclone dans le forum Langage
    Réponses: 7
    Dernier message: 06/06/2008, 08h38
  4. Réponses: 22
    Dernier message: 18/07/2006, 15h05

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