2

下面的函数检查字符串是否为整数,这意味着它应该只包含数字。但它不检查数字是否为负(负数也应该返回真,因为它们是整数)。

function validateInteger($value)
{
   //need is_numeric to avoid $value = true returns true with preg_match
   return is_numeric($value) && preg_match('/^\d+$/', $value);
}

我进行了测试并得到了结果:

'12.5'      => FALSE 
12.5        => FALSE 
'a125'      => FALSE 
'125a'      => FALSE 
'1a2.5'     => FALSE 
125         => TRUE 
'abc'       => FALSE 
false       => FALSE 
true        => FALSE 
'false'     => FALSE 
'true'      => FALSE 
null        => FALSE 
'null'      => FALSE 
'1231'      => TRUE 
-1231       => FALSE (SHOULD RETURN TRUE)
'-1231'     => FALSE (SHOULD RETURN TRUE)

我不想使用itnval() < 0. 我更喜欢正则表达式来检查负数。

谢谢

编辑:

我还有一个函数validateFloat,如果给定数字是浮点数,则返回 true,这意味着它只能包含数字。我也需要对此应用相同的逻辑,以便它为负浮点数返回 true

4

2 回答 2

4

is_int对你来说还不够好吗?

filter_var($input, FILTER_VALIDATE_INT)应该具有相同的效果,但也适用于字符串。

于 2013-04-17T18:07:09.357 回答
1

只需使用is_numeric(abs($val))

于 2013-04-17T18:12:46.473 回答