substr检查2个第一个字符是否为数字不起作用

时间:2013-12-12 10:59:59

标签: php

我有这个,我遵循PHP手册:

                      if(is_numeric(substr($username,0, 2))){
                         echo 'Invalid - use letters in first 2 chars';
                        }else{
                           echo 'Valid';
                        }

我检查了这个字符串:

  • 9dddd =有效。
  • 99ddd =无效。

为什么这样做? 它也应该为9dddd返回Invalid,这里有什么错误看起来不错?

感谢。

编辑:非常感谢,我已经使用了OlivierH样本并且工作正常。

解决。

4 个答案:

答案 0 :(得分:2)

你的订单错了。您显示"无效"如果这两个标志是数字。

答案 1 :(得分:1)

在您的情况下,您要测试用户名的 2个首字符是否包含数字。 最好的方法是使用正则表达式(documentation here

改变这个:

if(is_numeric(substr($username,0, 2))){
    echo 'Invalid - use letters in first 2 chars';
}
else{
    echo 'Valid';
}

if(preg_match('#[0-9]#', substr($username,0, 2))){
    echo 'Invalid - use letters in first 2 chars';
}
else{
    echo 'Valid';
}

答案 2 :(得分:0)

9d不是数字,您必须使用正则表达式检查:

if(preg_match('/\d/', substr($username,0, 2))){
    echo 'Invalid - use letters in first 2 chars';
}else{
   echo 'Valid';
}

答案 3 :(得分:0)

你不能这样做 在9aaa的情况下,substr($ username,0,2)将返回9a .. 9a不是有效的数字。

您应该执行类似

的操作
if (is_numeric(substr($username,0, 1)) || is_numeric(substr($username,0, 2))){
   echo 'Invalid - use letters in first 2 chars';
} else {
    echo 'Valid';
}

为了检查单个或双重第一个字符。