2010-02-09 4 views
2

Comment faire la validation des nombres décimaux en PHP?Validation décimale + PHP?

:)

(Le point décimal est facultatif) il devrait accepter ... 0, 1, 2 , 0,123, 0,2 , 12,34 etc.

+0

Voir cette quesion liée http://stackoverflow.com/questions/2138899/how-to-determine-whether-a-variable -is-a-decimal-et-il-est-moins-que-0-01-in-php/2138917 # 2138917 – Gordon

Répondre

7

Would l'un d'entre eux convient à vos besoins?

+0

xcellent ... merci beaucoup ... un tel fn. était disponible? Je cherchais comme n'importe quoi ...! – dev646

+0

@ dev646: Assurez-vous de lire les commentaires sur la page de fonction is_float. Ils sont vraiment utiles – AntonioCS

1

suggéré is_float/is_numeric ne fonctionnera pas, car is_float n'accepte pas les paramètres de demande (qui sont des chaînes) et is_numeric acceptera quelque chose comme "+ .1e0" qui n'est pas ce que vous voulez. La manière fiable consiste à utiliser l'expression régulière pour la validation, par exemple

$is_decimal = preg_match('/^\d+(\.\d+)?$/', $some_string); 

l'expression peut varier en fonction de vos besoins. Par exemple, ce qui précède acceptera également "000.00" ou "111111111111111".

+0

-1 'if ((float) $ a == $ a)' serait acceptable, mais pas des expressions régulières – soulmerge

+0

merci pour votre effort ... :) – dev646

3

Les réponses aux paramètres régionaux anglais ont déjà été publiées. Le NumberFormatter :: parse() prend soin d'autres endroits, si vous avez besoin de tels comportements:

$formatter = new NumberFormatter('de-DE', NumberFormatter::PATTERN_DECIMAL); 
if ($formatter->parse($value) !== false) { 
    # A correct numeric value in german locale, like '12.345,00001' 
}