Tester la valeur numérique d'une chaîne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester la valeur numérique d'une chaîne

par lem » 15 mai 2007, 14:56

et pourquoi pas simplement utiliser is_numeric() ? ;)
Impeccable, merci !
hello,

c'est on ne peut plus normal, lorsque tu compares une chaine à un entier, elle est automatiquement castée en entier.

par contre ce que tu peux essayer c'est ceci :

$ma_chaine == (string) $mon_entier;
C'est noté :)

par Jules Petibidon » 15 mai 2007, 14:01

hello,

c'est on ne peut plus normal, lorsque tu compares une chaine à un entier, elle est automatiquement castée en entier.

par contre ce que tu peux essayer c'est ceci :

$ma_chaine == (string) $mon_entier;

par Ryle » 15 mai 2007, 13:59

et pourquoi pas simplement utiliser is_numeric() ? ;)

Tester la valeur numérique d'une chaîne

par lem » 15 mai 2007, 13:48

Bonjour,

J'ai dans ma table un champ de type varchar(255).
Ce champ contient une quantité. On peut par exemple avoir "12" ou "1/2" ou "250g" ou "100ml" etc.
J'ai besoin de savoir si la valeur de mon champ est numérique ou non. Par exemple, "12" est numérique (même s'il est stocké sous forme de chaîne) mais "100ml" ne l'est pas.

Pensez-vous qu'il soit plus judicieux de les distinguer à l'aide d'expressions régulières ou en testant la "valeur" à l'aide d'un eval (ou quelque chose du même type) ou autre ?

J'ai essayé de comparer $monchamp avec (int)$monchamp mais mon script les trouve égaux même si $monchamp vaut "350g": quand je fais un echo des 2 valeurs, il affiche bien 350g et 350, mais quand je fais le test test d'égalité (avec "==") il me retourne true à chaque fois.

Voici mon code.
$ing est mon tableau renvoyé par ma requête sql, nb_i est le champ que je teste.
$le_nombre=(int)$ing["nb_i"];
if ($ing["nb_i"] == $le_nombre)
{
  echo $ing["nb_i"] . " vaut " . $le_nombre;
}
Ce code m'affiche:
350g vaut 350

Merci de vos conseils.