2013-11-20 30 views
2

网站的用户名可以包含空格字符,但它不能仅由空格字符组成。它可以包含一些符号(如下划线和短划线),但从某些符号开始看起来很奇怪。非拉丁字母应该被允许,最好是所有语言,但是制表符和换行符不应该。绝对没有Zalgo。仅允许使用“合理”字符的用户名

构成合理命名系统中应该和不应该允许的规则是复杂的,但它们对于每个网站实际上都是相同的。重新实现它们可能是一个坏主意。我在哪里可以找到实施?我使用PHP。

+0

我upvoting这个问题,因为可能应该有一个内置函数或外部库,将为您做到这一点。它在购物问题上处于临界状态,但这并非毫无道理。 –

回答

0

您应该验证新用户输入的用户名与正则表达式之间的匹配关系是否与允许的字符集匹配。

示例:以下仅允许使用英文字母数字字符和 - 和_。

function isNewUsernameValid ($name, $filter = "[^a-zA-Z0-9\-\_\.]"){ 
    return preg_match("~" . $filter . "~iU", $name) ? false : true; 
} 

if (!isNewUsernameValid ($name)){ 
print "Not a valid name."; 
} 

对于您的具体情况,您将不得不考虑正则表达式并测试正则表达式。

+0

我不认为这是一个合理的解决方案,因为涉及的工作太多。例如,手动允许世界上每种语言的字符并保持最新。 –

相关问题