【问题标题】:Username must begin with a letter - PHP [duplicate]用户名必须以字母开头 - PHP [重复]
【发布时间】:2018-12-03 12:03:47
【问题描述】:

我的目标是让表单在用户名输入不以字母开头时警告用户。不幸的是,尽管输入的用户名以字母开头,但条件仍然成立。

下面的代码是一个变量,它包含一个用于存储所有 26 个大写和小写字母的数组。

$alphas = array_merge(range('a', 'z'), range('A', 'Z'));

那么下面的代码就是用来输出错误信息的。

if (empty($username)){
    array_push($errors, "*Username cannot be blank<br>");
}else if(!preg_match("/^[a-zA-Z0-9_]*$/",$username)){
    array_push($errors, "*Username can only contain alpha-numeric characters or an underscore<br>");
}else if($username[0] !== $alphas){
    array_push($errors, "*Username must begin with a letter<br>");
}

条件是“if($username[0] !== $alphas)”,但它一直返回 TRUE,这意味着它将显示消息“*用户名必须以字母开头”,无论用户名输入的第一个字母。

我该如何解决这个问题?

【问题讨论】:

  • !== 是一个相等运算符,它不会检查数组中是否存在元素(提示:in_array)。或者,由于您已经使用正则表达式来验证提交,您可以修改它以单独检查第一个字符。
  • PHP 中的字符串可以像数组一样工作。所以你可以做$username[0]($username 是'hello'),它会有'h'。因此,您可以检查第一个字符是否为有效字符 (A-Z)。

标签: php arrays if-statement alphabetical alphabet


【解决方案1】:

以下代码运行良好.....

    $alphas = array_merge(range('a', 'z'), range('A', 'Z'));

    $errors=array();
    $username="username";
    echo $username[0];
    if (empty($username)){
        array_push($errors, "*Username cannot be blank<br>");
    }else if(!preg_match("/^[a-zA-Z0-9_]*$/",$username)){
        array_push($errors, "*Username can only contain alpha-numeric characters or an underscore<br>");
    }else if(!in_array($username[0],$alphas)){
        array_push($errors, "*Username must begin with a letter<br>");
    }else{
         echo "correct username";
// do what ever you want to code but do not hurt you mother :) :)
         die;
    }

    print_r($errors);

【讨论】:

  • 如果这对你有用……你可以批准它作为答案
猜你喜欢
  • 1970-01-01
  • 2015-04-17
  • 2015-08-03
  • 2016-02-23
  • 2020-12-31
  • 2021-03-29
  • 2012-05-16
相关资源
最近更新 更多