если вы не доверяете регулярному выражению из-за производительности, вы можете использовать следующее, что займет больше времени:
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;
}