如果我有一个网页,我需要确保用户对变量的输入只有字母(上下)、数字和破折号,并且长度必须正好是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;
}