下面的函数检查字符串是否为整数,这意味着它应该只包含数字。但它不检查数字是否为负数(负数也应该返回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,这意味着它只能包含数字和一个点。我需要对此应用相同的逻辑,以便它为负浮动数
答案 0 :(得分:4)
is_int
对你不够好?
filter_var($input, FILTER_VALIDATE_INT)
应该具有相同的效果,但也可以处理字符串。
答案 1 :(得分:1)
只需使用is_numeric(abs($val))