php: is_numeric по-разному обрабатывает начальные и конечные пробелы - PullRequest
0 голосов
/ 11 февраля 2019

Моя версия php:

➜  ~ php -v
PHP 7.3.1 (cli) (built: Jan 10 2019 13:16:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.1, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.1, Copyright (c) 1999-2018, by Zend Technologies

Я не понимаю, почему разнесенное значение в функции is_numeric ведет себя так?

➜  ~ php -a

php > var_dump(is_numeric('0012432'));
bool(true)
php > var_dump(is_numeric(' 0012432'));
bool(true)
php > var_dump(is_numeric('0012432 '));
bool(false)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

То же самое относится и к любой другой части основного языка PHP, которая принимает числовые строки.Это досадное несоответствие, но оно сделано намеренно и так уже много лет.Я лично собираюсь исправить это в следующей версии.

0 голосов
/ 11 февраля 2019

Эта функция обрабатывает начальные пробелы иначе, чем is_int (), is_float (), is_real (), is_long () и is_double ().

is_numeric(" 12345") = true
is_int(" 12345") = false
is_float(" 12345") = false
is_real(" 12345") = false
is_long(" 12345") = false
is_double(" 12345") = false

Я нашел отчет об ошибке открытым для этих случаев,не уверен, будут ли они работать над этим,

Сообщение об ошибке

...