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

 ID:                 43372
 Comment by:         kodafixed at gmail dot com
 Reported by:        gbml at bravogroup dot org
 Summary:            FILTER_VALIDATE_INT returns null for numbers with
                     leading zero(s)
 Status:             Not a bug
 Type:               Bug
 Package:            Filter related
 Operating System:   linux
 PHP Version:        5.2.5
 Assigned To:        pajoye
 Block user comment: N
 Private report:     N

 New Comment:

That assumes one has control over the input. If for example, the input data 
comes from a form submission then it may in fact come into the program with 
leading zero(es). In order to make the data in this scenario "valid" for the 
test you would have to cast it or manipulate it - which makes using the 
built-in function moot. 
The concept that filter_var('8', FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL) 
should return 8, but filter_var('08', FILTER_VALIDATE_INT, 
FILTER_FLAG_ALLOW_OCTAL) should return false is ludicrous.


Previous Comments:
------------------------------------------------------------------------
[2013-08-05 15:41:28] ras...@php.net

Don't use FILTER_VALIDATE_INT if you don't want to validate decimal notation 
integers. Decimal notation integers do not have a leading 0, except for 0 
itself, 
of course. If you just want a filter that checks if the input is entirely made 
of 
digits, just use a regex. eg.

filter_var($string, FILTER_VALIDATE_REGEXP, ["options"=>["regexp"=>"/^[0-
9]+$/"]]);

------------------------------------------------------------------------
[2013-08-05 14:05:50] kodafixed at gmail dot com

FILTER_FLAG_ALLOW_OCTAL is not a feasible workaround for this issue.

echo filter_var('08', FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL) ? "OKAY" : 
"NOT OKAY";
// RESULT: "NOT OKAY"

FILTER_FLAG_ALLOW_OCTAL completely invalidates tests where the value has a 
leading 0 and includes an 8 or 9.

------------------------------------------------------------------------
[2007-11-22 11:13:09] paj...@php.net

See FILTER_FLAG_ALLOW_OCTAL.

------------------------------------------------------------------------
[2007-11-22 10:54:54] gbml at bravogroup dot org

Description:
------------
Filtering input numbers with leading zero(s) and filter FILTER_VALIDATE_INT 
does not produce number


Reproduce code:
---------------
// $_POST ["size"] has value "002"

filter_input (INPUT_POST, "size", FILTER_VALIDATE_INT)



Expected result:
----------------
2

Actual result:
--------------
null


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



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

Reply via email to