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

HD -  
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   -
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

Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   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
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
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   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
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
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lefou4 Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   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
HD
 
c'est parfait, merci à tous ! énormément...
0
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   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