[PHP] Si la valeur a une certaine forme..

HD -  
Ssylvainsab Messages postés 2892 Statut Modérateur -
salut

j ai une $variable numérique et je voudrai faire un test if pour savoir si elle a cette forme :

"*" (exemple : "7")
ou "*,*" (exemple : "7,2")
ou "*,**" (exemple : "7,22")

comment ecrire cela svp ? je seche completement :-(

merci d'avance

ps: un switch serait encore mieux...

7 réponses

  1. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Bonsoir.

    Si tu veux vérifier que la variable est bien un nombre, tu peux utiliser is_numeric.
    Plus précisément, is_int te permet de vérifier que la variable est un entier et is_float un décimal.
    0
    1. HD
       
      l'objectif c'est de vérifier s'il y a une virgule, et s'il y a des chiffres après (et combien) sachant que c'est bien d'un "numeric"...
      0
  2. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Pour voir s'il y a une virgule, utilises is_float.

    Est-ce qu'il ne peut y avoir qu'un nombre avant la virgule (si virgule il y a ;-) ), ou peut-il y en avoir plus ?
    0
  3. HD
     
    justement, le but est de savoir s'il y a 0, 1 ou plusieurs chiffres après la virgule...
    merci à tous pour votre aide
    0
  4. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Je demande combien de chiffres il peut y avoir avant la virgule, car si tu le sais c'est très simple.

    Tu peux utiliser la fonction substr, qui te permet de "couper" une chaine.

    Si il y en a un par exemple, il faut enlver ce chiffre et la virgule, puis compter le nombre de caractères.

    Tu ferais donc :
    echo strlen(substr($chaine,2));
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lefou4 Messages postés 73 Statut Membre 44
     
    Les expressions régulières marchent bien aussi :

    (on teste que la valeur est un nombre décimal avec 2 chiffres max après la virgule)
    if(ereg("^[0-9]+(\,[0-9]{1,2})?$",$ma_var)) echo "ok";
    else echo "erreur";


    Sinon pour connaître le nombre de chiffres derrière la virgule :
    $tab = explode(",",$ma_var);
    $nbre_chiffres = $tab[sizeof($tab)-1];
    0
  7. HD
     
    c'est parfait, merci à tous ! énormément...
    0
  8. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Les expressions régulières marchent bien aussi
    Oui, mais c'est plus lent.

    Tu peux utiliser une solution en mélangeant les deux :
    echo strlen(preg_replace'#[0-9]+(,([0-9]+))?#','$2',$chaine));
    0