#41681 [Bgs->Csd]: filter_validate_float doesn't allow scientific flag
| From: | pajoye@php.net | Date: | Thu, 14 Jun 2007 08:04:13 +0000 |
| Subject: | #41681 [Bgs->Csd]: filter_validate_float doesn't allow scientific flag | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-113763@lists.php.net to get a copy of this message | ||
ID: 41681
Updated by: pajoye@php.net
Reported By: rich at corephp dot co dot uk
-Status: Bogus
+Status: Closed
Bug Type: Filter related
Operating System: Windows XP SP2
PHP Version: 5.2.3
Assigned To: pajoye
New Comment:
"Then the 'bug' is simply in the documentation, because the thousands
flag is *not* listed as a valid flag for that filter, and according to
what you said, it should be."
Good point, and the decimal option was missing as well. It is fixed in
CVS, it will show up in the next manual update.
Thanks for your report!
Previous Comments:
------------------------------------------------------------------------
[2007-06-14 07:53:31] rich at corephp dot co dot uk
Then the 'bug' is simply in the documentation, because the thousands
flag is *not* listed as a valid flag for that filter, and according to
what you said, it should be.
------------------------------------------------------------------------
[2007-06-14 05:30:03] pajoye@php.net
"In which case why does the "allow thousands flag work"
Because the thousand separator can be , ' or even . There is also an
option to define it.
The scientific format is support by default, always. Just like a
(float)$var.
Finally, "e34200" is not a valid scientific format. Please refer to the
various tests cases in the filter extensions to see other examples
(http://cvs.php.net/viewvc.cgi/php-src/ext/filter/tests/).
------------------------------------------------------------------------
[2007-06-13 23:22:02] rich at corephp dot co dot uk
I understand that, in which case why does the "allow thousands" flag
work? One way or the other it is inconsistent. Either the bug is that
the allow thousands flag works, or the bug is that allow scientific
doesn't.
------------------------------------------------------------------------
[2007-06-13 20:45:19] pajoye@php.net
It is a flag for the sanitizing function not the validate filter, see
the main page of the filter manual function.
(Not a bug > bogus)
------------------------------------------------------------------------
[2007-06-13 18:31:26] rich at corephp dot co dot uk
Description:
------------
FILTER_VALIDATE_FLOAT doesn't allow for the use of
FILTER_FLAG_ALLOW_SCIENTIFIC as an option, although it DOES allow for
the use of FILTER_FLAG_ALLOW_THOUSAND.
As both are valid FILTER_SANITIZE_NUMBER_FLOAT flags, why not the same
for the validate float filter itself?
Reproduce code:
---------------
$val = '34,200';
$result = filter_var($val, FILTER_VALIDATE_FLOAT,
FILTER_FLAG_ALLOW_THOUSAND);
var_dump($val);
var_dump($result);
$val = 'e34200';
$result = filter_var($val, FILTER_VALIDATE_FLOAT,
FILTER_FLAG_ALLOW_SCIENTIFIC);
var_dump($val);
var_dump($result);
Expected result:
----------------
string(6) "34,200"
float(34200)
string(6) "e34200"
float(34200)
Actual result:
--------------
string(6) "34,200"
float(34200)
string(6) "e34200"
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41681&edit=1