what does FILTER_FLAG_ALLOW_THOUSAND do in combination with FILTER_VALIDATE_FLOAT?

667 Views Asked by At

in the context of FILTER_VALIDATE_FLOAT, what does FILTER_FLAG_ALLOW_THOUSAND do? the documentation says it's a supported option for FILTER_VALIDATE_FLOAT, but doesn't say what it actually does, so what's the difference between

filter_var($val, FILTER_VALIDATE_FLOAT);

and

filter_var($val, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);

?

2

There are 2 best solutions below

0
On

FILTER_FLAG_ALLOW_THOUSAND is documented on a separate url, here: https://www.php.net/manual/en/filter.filters.flags.php

quote:

Allows a comma (,) as a thousands separator in numbers.

and this

$val = "123,456,789.123";
var_dump(
    ($v1=filter_var($val, FILTER_VALIDATE_FLOAT)),
    ($v2=filter_var($val, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND)),
    $v1===$v2
    );

outputs:

bool(false)
float(123456789.123)
bool(false)
0
On

This little test shows you the difference:

$val = "1,000.7";

$result1 = filter_var($val, FILTER_VALIDATE_FLOAT);
//result1 : bool(false)

$result2 = filter_var($val, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
//result2 : float(1000.7)