Bug #77010 [Com]: is_numeric returns false for numeric strings
| From: | carusogabriel@php.net | 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