有没有办法可以检查用户是否只使用PHP输入了4个数字而不是4个字母?如果是这样的话?
答案 0 :(得分:4)
if (strlen($s) == 4 && ctype_digit($s)) {
// ...
}
答案 1 :(得分:2)
或者您也可以这样做:
if(preg_match('/^\d{4}$/',$input)) {
// valid input
} else {
// invalid input.
}
答案 2 :(得分:2)
ctype_digit将无法处理已转换为整数/浮点形式的用户输入。正则表达式很简单 - 所以只在需要时使用它。所以,考虑到这一点,我会做类似
的事情$s = (string) $_POST['value'];
if(strlen($s) === 4 AND ctype_digit($s))
{
// Now that it's verified as a good value
// convert to int for the rest of the script
$value = (int) $s;
}
这也可以保护您免于将数组传递给字符串检查的用户。
答案 3 :(得分:1)
Filters可能是一个有效的选择,尽管有点冗长。它们允许您像规则一样表达您的验证规则,这很好:
$isValid = filter_input(
INPUT_POST,
'varname',
FILTER_VALIDATE_INT,
array('options' => array('min_range' => 1000, 'max_range' => 9999))
);