寻找特定的过滤器PHP

时间:2012-01-10 01:18:26

标签: php filter validation

我正在尝试验证用户的用户名。我希望它能够有字母和数字,不超过30个字符。

是否有内置的PHP过滤器可以为我完成此操作?那些手工正则表达的东西伤害了我的大脑...

4 个答案:

答案 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);

我知道你没有要求设计批评,但如果用户名真的是必需品,请认真思考。如果没有,请考虑使用电子邮件地址,因为它们更加用户友好,而且您可能会要求用户提供该信息。