检查字符串是否为不带正则表达式的字母数字

时间:2018-08-27 06:50:07

标签: php

我想检查字符串是否为字母数字,并且不打算使用Regex。我得到了正确的答案,但是程序以某种方式抛出错误,指出undefined offset。我检查了阵列键,看来它们很好。

$str="hello";
$arr=str_split($str);//convert a string to an array
$a=0;
$d=0;

for($i=0;$i<=count($arr);$i++)
{
    if($arr[$i]>='a' && $arr[$i]<='z' || $arr[$i]>='A' && $arr[$i]<='Z')
    {
        $a=1;
    }
    elseif($arr[$i]>='0' && $arr[$i]<='9')
    {
        $d=1;
    }

}
if($a==1&&$d==1)
{
    echo "Alphanumeric";
}
else
{
    echo "Not alphanumeric";
}

3 个答案:

答案 0 :(得分:2)

数组从索引零开始,所以结束于<?php for($i=0; $i<db_rowcount();$i++){ //loop through every result set $projID=db_get($i,0); $projNo=db_get($i,1); $projDesc=db_get($i,2); $projSDE_1=db_get($i,8);//1st Services Development Engineer $projSDE_1_name = func_GetEmpName($projSDE_1);//get name from function }//endfor function func_GetEmpName($empID) { $sqlEmp="select EmpID,LastName2_c from empbasic WHERE EmpID= '".$empID."'"; db_select($sqlEmp); $rowcount=db_rowcount(); if(db_rowcount()>0){ for($f=0;$f<count($empID);$f++){ $empID=db_get($f,0); $empName=db_get($f,1); } } return $empName; } // function ?>

i<count

答案 1 :(得分:2)

您应该签出ctype_alnum ( string $text );功能。

ctype_alnum

$str="hello";

if(ctype_alnum($str))
{
    echo "Alphanumeric";
}
else
{
    echo "Not alphanumeric";
}

答案 2 :(得分:1)

您应该使用$i < count($arr)$i <= count($arr) -1,因为数组从0开始,只有$i <= count($arr)会导致undefined offset错误消息。