is_numeric还是数字preg_match?

5 php security

我在论坛上看到你无法完全信任is_numeric().它允许通过"0xFF"例如允许的十六进制...

所以我的问题是你能欺骗is_numeric吗?我是否需要使用正则表达式才能正确执行?

Jer*_*ten 12

以下是is_numeric()认为是一个数字字符串:

数字字符串由可选符号,任意数量的数字,可选的小数部分和可选的指数部分组成.因此+ 0123.45e6是有效的数值.也允许使用十六进制表示法(0xFF),但只能使用符号,十进制和指数部分.

如果您只想检查字符串是否包含十进制数字0-9,则可以使用ctype_digit().


mas*_*nix 0

正则表达式显然是您更好的选择,但它确实会带来开销。所以这实际上取决于您的情况和您想做什么。