php:is_numeric以不同方式处理前导和尾随空格

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (92)

我的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)
提问于
用户回答回答于

核心PHP语言的其他部分也接受数字字符串。这是一个恼人的不一致,但它是有意的,并且多年来一直如此。我个人打算在未来的版本中解决这个问题。

用户回答回答于

此函数处理前导空格的方式与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

我找到了针对这些案例的错误报告,不确定他们是否会在这方面工作,

错误报告

扫码关注云+社区

领取腾讯云代金券