【发布时间】: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