PHP验证问题

PHP验证问题,php,Php,是否有一种方法可以检查用户是否使用PHP只输入了4个数字而不是4个字母?如果是这样,如何进行?或者,您也可以执行以下操作: if (strlen($s) == 4 && ctype_digit($s)) { // ... } if(preg_match('/^\d{4}$/',$input)) { // valid input } else { // invalid input. } 或者,您也可以执行以下操作: if(preg_match('/^\d{4}$/',$

是否有一种方法可以检查用户是否使用PHP只输入了4个数字而不是4个字母?如果是这样,如何进行?

或者,您也可以执行以下操作:

if (strlen($s) == 4 && ctype_digit($s)) {
  // ...
}
if(preg_match('/^\d{4}$/',$input)) {
 // valid input
} else {
 // invalid input.
}

或者,您也可以执行以下操作:

if(preg_match('/^\d{4}$/',$input)) {
 // valid input
} else {
 // invalid input.
}

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;
}

这还可以防止用户将数组传递给字符串检查。

ctype\u 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;
}
这还可以防止用户将数组传递给字符串检查。

可能是一种有效的替代方法,尽管有点冗长。它们允许您像规则一样表达验证规则,这很好:

$isValid = filter_input(
    INPUT_POST,
    'varname',
    FILTER_VALIDATE_INT,
    array('options' => array('min_range' => 1000, 'max_range' => 9999))
);
可能是一个有效的选择,尽管有点冗长。它们允许您像规则一样表达验证规则,这很好:

$isValid = filter_input(
    INPUT_POST,
    'varname',
    FILTER_VALIDATE_INT,
    array('options' => array('min_range' => 1000, 'max_range' => 9999))
);

十六进制符号和科学符号
也是数字的!还有,关于
ctype
不工作和用户输入的问题是什么?那是胡说八道。当然ctype_数字会起作用。从文档中可以看到:“检查提供的字符串文本中的所有字符是否都是数字。”这正是询问者想要做的。对不起,我的错。其实情况正好相反
ctype\U digit
不适用于整数,如果您正确键入值,则会导致问题。十六进制表示法和科学表示法
也是数字的
!还有,关于
ctype
不工作和用户输入的问题是什么?那是胡说八道。当然ctype_数字会起作用。从文档中可以看到:“检查提供的字符串文本中的所有字符是否都是数字。”这正是询问者想要做的。对不起,我的错。其实情况正好相反
ctype\u digit
对整数不起作用,如果正确键入值,则会导致问题。