PHP验证问题

时间:2010-09-24 02:42:33

标签: php

有没有办法可以检查用户是否只使用PHP输入了4个数字而不是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))
);