2010-05-28 4 views
1

Je pense qu'il ya un bug dans ce filter_var ou peut-être que je fais quelque chose de mal: Essayez ceci:PHP - BUG avec filter_var et FILTER_VALIDATE_FLOAT

 $options = array(
      'options' => array(
       'default' => 3, 
       'min_range' => 1000.0, 
       'max_range' => 5000.6, 
      ) 
     ); 

    $VariableValue2 = 5698; 
    $VariableValue4 = 5698.2; 

    $chicco3 = filter_var($VariableValue2, FILTER_VALIDATE_INT, $options); 
    $chicco4 = filter_var($VariableValue4, FILTER_VALIDATE_FLOAT, $options); 

Il suppose de ne valide pas ... Enfait la valeur: 5698 est supérieur à 5000.6 !!!! Mais avec FILTER_VALIDATE_INT cela fonctionne FIN !! Il retourne 3 c'est la valeur par défaut dans le cas où il ne le valide pas ... PERFECT ...

Au lieu de cela, avec FILTER_VALIDATE_FLOAT il le valide ... Il renvoie 5698.2 !!! Je fais quelque chose de mal ???

Merci à tout le monde ...

Samuele

Répondre

7

Vérifier here; il semble que vous utilisiez les mauvaises options avec le filtre. Les options min_range et max_range sont pour le filtre filter_validate_int.

Par ailleurs, si vous êtes en train de vérifier la taille d'un certain nombre, il est probablement plus facile d'utiliser une sorte de

if(($number > 1000) && ($number < 5000.6)) 
    // do stuff; 

mécanisme à la place.

+1

Ohh merci beaucoup ... Je pense que vous avez raison ... Mais je pensais qu'il utilise les mêmes options ... Donc, je ne peux pas valider la plage d'un flottant avec la fonction: FILTER_VALIDATE_FLOAT? Il ressemble très étrange avec FILTER_VALIDATE_INT vous pouvez le faire et avec FILTER_VALIDATE_FLOAT vous ne pouvez PAS le faire ... Quoi qu'il en soit je vais le faire par moi ... Merci encore ... :) – Samuele

+4

@Samuele: La cohérence API n'est pas exactement un point fort PHP. – webbiedave

+0

Je le pense ... :) – Samuele

8

FILTER_VALIDATE_FLOAT n'accepte pas d'option de plage. Vérifiez le doc.