刚才搞错了,找了半天这次应该没问题了,就是我现在在用一个PHP程序,但是这个程序禁止用户使用中文名注册ID,只能用英文或者数字,我找了半天发现应该是下面这个代码造成的function validusername($username)
{
if ($username == "")
return false; // The following characters are allowed in user names
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for ($i = 0; $i < strlen($username); ++$i)
if (strpos($allowedchars, $username[$i]) === false)
return false; return true;
}看着应该是因为里面限制的这句
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
使得程序无法使用中文名注册吧,但是我不知该怎么改,希望懂PHP的大大们帮看下如何修改下让这个程序能够使得会员注册中文名呢?
谢谢啊
{
if ($username == "")
return false; // The following characters are allowed in user names
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; for ($i = 0; $i < strlen($username); ++$i)
if (strpos($allowedchars, $username[$i]) === false)
return false; return true;
}看着应该是因为里面限制的这句
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
使得程序无法使用中文名注册吧,但是我不知该怎么改,希望懂PHP的大大们帮看下如何修改下让这个程序能够使得会员注册中文名呢?
谢谢啊
return preg_match("/^[\x80-\xff_a-zA-Z0-9]+$",$username);
}
function validusername($account) {
$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
$len = strlen($username);
if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
return FALSE;
} else {
return TRUE;
}
}
其实你整个方法直接用上面的正则匹配验证就可以了
^表示匹配开始符
\x80-\xff表示匹配中文
_表示匹配下划线
a-zA-Z表示匹配所用英文字母
0-9表示匹配数字
+表示表达式至少出现1次
$终止符
呃~谢谢说明,但是我对PHP一点都不太清楚,想知道应该把我原文里的哪些替换成这个呢?
难道是把原来所有的这些代码
function validusername($username)
{
if ($username == "")
return false;// The following characters are allowed in user names
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for ($i = 0; $i < strlen($username); ++$i)
if (strpos($allowedchars, $username[$i]) === false)
return false;return true;
}全部更换成
function validusername($username){
return preg_match("/^[\x80-\xff_a-zA-Z0-9]+$",$username);
}
这么点就可以了吗?
function validusername($username)
{
if ($username == ""){
return false;
}else{
return true;
}
}全部替换成这样,除不允许空外,其余全部允许。
呃~担心这样会不会允许的太多了?搞出什么特殊字符BUG啥了~