Php 使用ord()进行验证

Php 使用ord()进行验证,php,validation,substr,ord,Php,Validation,Substr,Ord,我想使用ord()从文本框验证发布的数据(整数和大小写字符串): t1是从html文本框发送的文本 for($i=0; $i<strlen($t1); $i++){ if(ord(substr($t1,$i,1))>64 || ord(substr($t1,$i,1))<123){ if(ord(substr($t1,$i,1))>89 && ord(substr($t1,$i,1))<97 || or

我想使用ord()从文本框验证发布的数据(整数和大小写字符串):

t1是从html文本框发送的文本

for($i=0; $i<strlen($t1); $i++){
    if(ord(substr($t1,$i,1))>64 || ord(substr($t1,$i,1))<123){
        if(ord(substr($t1,$i,1))>89 && ord(substr($t1,$i,1))<97 ||
            ord(substr($t1,$i,1))>122) {
            $validLoginInfoAcceptedUserName = false;
            break;
        }
    } else {
        $validLoginInfoAcceptedUserName = true;
        continue;
    }
}
for($i=0;$i64 | | ord(substr($t1,$i,1))89和&ord(substr($t1,$i,1))122){
$validLoginFoAcceptedUserName=false;
打破
}
}否则{
$validLoginFoAcceptedUserName=true;
继续;
}
}

我尝试了所有方法,但我被卡住了,如果你知道问题出在哪里,请帮助我解决问题,但如果你不知道,请不要建议任何其他验证方法。

你使用
ord()
检查的方法的问题是,有些条件下,
$validLoginInfoAcceptedUserName
将永远不会被设置,以及其他情况,其中您遗漏了要验证的字符范围的一部分

可以通过使用单个if条件而不是嵌套条件来简化它。此外,通过在检查变量之前将结果赋给变量,可以避免重复调用
ord()
substr()

for ($i = 0, $l = strlen($t1); $i < $l; $i++) {
    $o = ord(substr($t1, $i, 1));
    if ($o < 48 || $o > 57 && $o < 65 || $o > 90 && $o < 97 || $o > 122) {
        $validLoginInfoAcceptedUserName = false;
        break;
    } else {
        $validLoginInfoAcceptedUserName = true;
    }
}

另一种方法是使用有效范围的数组,然后检查它是否在数组中。请注意,您可以按位置
$t1[$i]
访问字符串:

$range = array_merge(range(48, 57), range(65, 90), range(97, 122));

for($i=0; $i<strlen($t1); $i++){
    if(!in_array(ord($t1[$i]), $range)) {
        $validLoginInfoAcceptedUserName = false;
        break;
    }
    $validLoginInfoAcceptedUserName = true;
}
但是,请使用:


在这种情况下,使用正则表达式进行验证似乎更为简单。您能否准确地说出您想要验证的内容以及您想要验证的文本示例(应该通过的内容和应该失败的内容)同样,我假设您的表单是
method=“post”
,并且您有一个
$t1=$\u post['t1']@NigelRen除了小写和大写字符串以外的所有东西都必须失败如果我需要使用其他更好的方法,我需要问什么?哦,是的,我总是忘记那些ctype函数。这肯定更简单。
$range = array_merge(range(48, 57), range(65, 90), range(97, 122));

for($i=0; $i<strlen($t1); $i++){
    if(!in_array(ord($t1[$i]), $range)) {
        $validLoginInfoAcceptedUserName = false;
        break;
    }
    $validLoginInfoAcceptedUserName = true;
}
$range = array_merge(range(48, 57), range(65, 90), range(97, 122));
$array = array_map('ord', str_split($t1));

$validLoginInfoAcceptedUserName = !(array_diff($array, $range));
$validLoginInfoAcceptedUserName = ctype_alnum($t1);