如果字符串中只有正数或负数,我需要取一个字符串并返回true。有没有办法做到这一点?
$rating = "-25";
if (!ctype_digit($rating)) {
echo "Not a digit.";
}
else {
echo "Is a digit.";
}
结果:
不是数字。
需要结果:
是数字。
答案 0 :(得分:2)
ctype_digit()
适用于仅包含 数字的值。
其中$rating = -25;
为false,因为在此特定情况下将其视为ASCII代码(如下所述),"-25"
无效,因为-
不是数字。
您可以输入juggle,但我认为您正在寻找is_numeric()
echo is_numeric( "-25");
或echo ctype_digit((integer) $var);
但是,如果字符串无法转换为整数,后者将返回true。如果是这种情况,它的值为0.
重要:强>
如果将-128
和255
范围内的文字整数传递给ctype_digit()
,则该值将转换为ASCII表中定义的字符。如果它不是数字,则预期为假。任何其他整数值都是正常的预期行为。
答案 1 :(得分:0)
filter_var 是这个问题的正确答案,自 5.2 以来一直存在。
filter_var 将返回过滤数据或 false
如果字符串不是有效整数。
var_dump(filter_var("1", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("0", FILTER_VALIDATE_INT) !== false);
var_dump(filter_var("-1", FILTER_VALIDATE_INT) !== false);
结果:
test.php:1:boolean true
test.php:2:boolean true
test.php:3:boolean true
请注意,您必须使用 false
而不是逻辑 !
执行比较,否则与 0
比较时会失败。