我在论坛上看到你不能完全信任 is_numeric()。它允许通过“0xFF”,例如允许的十六进制......
所以我的问题是你可以欺骗 is_numeric 吗?我需要使用正则表达式来正确执行吗?
答案 0 :(得分:12)
以下是is_numeric()认为是数字字符串的内容:
数字字符串由可选符号,任意数量的数字,可选的小数部分和可选的指数部分组成。因此+ 0123.45e6是有效的数值。也允许使用十六进制表示法(0xFF),但只能使用符号,十进制和指数部分。
如果您只想检查一个字符串是否包含十进制数字0-9,您可以使用ctype_digit()。
答案 1 :(得分:2)
还可以使用ctype_digit()
检查是否为真数。
答案 2 :(得分:0)
正则表达式显然是你更好的选择,但它确实带来了开销。所以这取决于你的情况和你想做的事情。
答案 3 :(得分:0)
是否用于验证用户输入?然后使用正则表达式或断言它的开销不包含“x”和is_numeric()不会太多开销。
答案 4 :(得分:0)
如果您只是想检查某事是否为整数,请尝试以下方法:
function isInteger($value){
return (is_numeric($value) ? intval($value) == $value : false);
}
如果你想检查花车那么这显然不会起作用:)