如何验证输入字符串中的模式


How to validate pattern in input string?

如果我有一个网页,我需要确保用户对变量的输入只有字母(上下)、数字和破折号,并且长度必须正好是20个字符,如何执行?

使用正则表达式很容易做到这一点:

echo preg_match('/^[0-9a-zA-Z'-]{20}$/', 'abcd');
0
echo preg_match('/^[0-9a-zA-Z'-]{20}$/', 'abcdefghijkmlnopqrst');
1

您可以使用正则表达式。参见preg_match

您的正则表达式可能看起来像:

/^[A-Za-z0-9'-]{20}$/

/^['w-]{20}$/

如果由于性能原因而不信任regexp,则可以使用以下方法,这将需要更长的时间:

function checkalphanum($str){
    $allowed = "0123456789abcdefghijklmnopqrstuvwxyz_-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if(strlen($str) == 20){ return false;}
    for($i=0; $i < count($str); $i++){
        if(strpos($allowed, substr($str, $i, 1)) == -1){
            return false;
        }
    }
    return true;
}