检查字符串是否为整数(包括负数)PHP

时间:2013-04-17 18:04:22

标签: php regex integer isinteger

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

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

2 个答案:

答案 0 :(得分:4)

is_int对你不够好?

filter_var($input, FILTER_VALIDATE_INT)应该具有相同的效果,但也可以处理字符串。

答案 1 :(得分:1)

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