Edit report at http://bugs.php.net/bug.php?id=40156&edit=1

 ID:                 40156
 Comment by:         ndesbarats at gmail dot com
 Reported by:        pmjones88 at gmail dot com
 Summary:            FILTER_SANITIZE_NUMBER_FLOAT incorrect when multiple
                     dots in value
 Status:             Bogus
 Type:               Bug
 Package:            Filter related
 Operating System:   Mac OS X
 PHP Version:        5.2.0
 Block user comment: N

 New Comment:

Had the same problems as pmjones88, and wrote a function to extract
floats (and ints) more intelligently from strings that contain
superfluous characters. Hope this helps. I think something like this
should be added as a core PHP function, since I have to believe that it
addresses a pretty common need:



http://www.choosingsmarter.com/2010/09/extracting-a-number-from-a-string-in-php.html


Previous Comments:
------------------------------------------------------------------------
[2007-01-17 20:36:42] der...@php.net

The string you're passing is obviously not a valid float... as it has
all kinds of weird stuff around it. Of course it returns "false"
(invalid data) in this case. ext/filter is not a regular expression
collection... it's there to filter out unwanted characters (sanitizing
filters) or to validate the contents of a string as a specific type of
data.

------------------------------------------------------------------------
[2007-01-17 20:33:49] pmjones88 at gmail dot com

When I try pajoye's suggestion, to use validation, it does not return a
float as he says it should.  Instead, it (properly) returns false.



    $val = 'abc ... 123.45 ,.../';

    $san = filter_var($val, FILTER_VALIDATE_FLOAT);

    var_dump($san); // (bool) false



What's a guy gotta do to get a float out of that?

------------------------------------------------------------------------
[2007-01-17 20:26:02] tony2...@php.net

Again, sanitizing filter just sanitizes the input data, it does not
validate it.

------------------------------------------------------------------------
[2007-01-17 20:25:54] der...@php.net

No, that's what the logical filters are for.

------------------------------------------------------------------------
[2007-01-17 20:23:14] pmjones88 at gmail dot com

Then it should at least fail when it realizes that the value isn't going
to be useful as a float.  Maybe I don't get it; a "sanitized" float
should return as a "float".  Otherwise you're just stripping non-numeric
characters, which is not quote the same thing.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    http://bugs.php.net/bug.php?id=40156


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=40156&edit=1

Reply via email to