我正在尝试验证用户的用户名。我希望它能够有字母和数字,不超过30个字符。
是否有内置的PHP过滤器可以为我完成此操作?那些手工正则表达的东西伤害了我的大脑...
答案 0 :(得分:2)
没有内置过滤器。
您可能需要考虑learning regular expressions, 。
$valid = (strlen($username) <= 30 && preg_match("#^[a-z0-9A-Z]+$#", $username));
答案 1 :(得分:0)
没有针对此特定内容的过滤器,但是这有效并且具有简单的正则表达式:
function isValidUsername($username) {
return (strlen($username) <= 30) && (preg_match("/^[a-z0-9]+$/i", $username) == 1);
}
答案 2 :(得分:0)
这是一个应该做的功能。我建议花些时间学习正则表达式的工作原理。它们是程序员工具箱中最强大(最有用)的工具之一。
更新:使用上述评论中的分隔符建议,并略微简化我的功能:
更新2:添加/ D模式修饰符以确保$阻止匹配\ n。
function isValidUsername($name)
{
return preg_match("/^[a-zA-Z0-9]{1,30}$/D", $name);
}
答案 3 :(得分:0)
PHP中没有内置任何东西来满足这些要求。这是你需要的正则表达式:
$valid = (bool)preg_match('/^[a-zA-Z0-9]{1,30}$/', $username);
我知道你没有要求设计批评,但如果用户名真的是必需品,请认真思考。如果没有,请考虑使用电子邮件地址,因为它们更加用户友好,而且您可能会要求用户提供该信息。