Bug #77010 [Com]: is_numeric returns false for numeric strings

From: Date: Sat, 13 Oct 2018 21:05:12 +0000
Subject: Bug #77010 [Com]: is_numeric returns false for numeric strings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-217549@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77010&edit=1 ID: 77010 Comment by: carusogabriel@php.net Reported by: carusogabriel@php.net Summary: is_numeric returns false for numeric strings Status: Open Type: Bug Package: Scripting Engine problem Operating System: Irrelevant PHP Version: Irrelevant Block user comment: N Private report: N New Comment: > Numeric strings consist of optional sign, any number of digits, optional decimal part and > optional exponential > part. Thus +0123.45e6 is a valid numeric value. Gotcha. So if we're going to take this further, we'd also consider a numeric string with a string suffixed, for example: "7.3.0-beta1". > (int)"x" === 0. Does that mean "x" is numeric? Let's pretend I've never used that argument :P Previous Comments: ------------------------------------------------------------------------ [2018-10-13 21:00:13] requinix@php.net Well, according to the docs, > Numeric strings consist of optional sign, any number of digits, optional decimal part and > optional exponential > part. Thus +0123.45e6 is a valid numeric value. > I current judge everything that we can cast for an integer number, for example, as numeric > numbers. (int)"x" === 0. Does that mean "x" is numeric? ------------------------------------------------------------------------ [2018-10-13 20:56:43] carusogabriel@php.net @requinix What do we consider as numbers, better, as numeric numbers in PHP? I current judge everything that we can cast for an integer number, for example, as numeric numbers. ------------------------------------------------------------------------ [2018-10-13 20:49:47] requinix@php.net "2.14.0-DEV" doesn't look like any number I've seen before. So... what, if it starts with a digit then it's numeric? Should "1a" be numeric? ------------------------------------------------------------------------ [2018-10-13 20:46:22] carusogabriel@php.net Description: ------------ As discussed in https://github.com/phpstan/phpstan/issues/1497, there're some strings containing castable integers, for example: https://3v4l.org/Ogral, that reports as false when passing it to is_numeric. I'm opening this bug ticket to discuss if we need to consider this a bug and target all active branches, or consider as a Feature Request and propose this as a new feature to the next minor version of PHP. Test script: --------------- <?php var_dump(is_numeric('2.14.0-DEV')); Expected result: ---------------- bool(true) Actual result: -------------- bool(false) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77010&edit=1

« previous php.bugs (#217549) next »