用PHP函数创建一个没有空格的用户名.但不知怎么添加了空格



我有一个PHP脚本,它根据某人通过Facebook登录的时间生成用户名。

我这样称呼它:

$username = create_username($facebook_data['name']);

功能是:

function create_username($username)
{
global $db;
$valid = false;
$counter = 0;
$new_username = str_replace(' ', '', $username);
while (!$valid) 
{
    $counter++;
    $is_username = $db->count_rows('users', "WHERE username='" . $new_username . "'");
    if ($is_username)
    {
        $new_username = $username . $counter;
    }
    else 
    {
        $valid = true;
    }
}
$new_username = strtolower($new_username);
return $new_username;

}

问题是,如果我有一个名为"johnsmith"的用户,并且有一个名叫"johnsmith1"的人注册了,它会生成一个用户名"johnsmish1"而不是"johnsmich1"。我做错了什么?

我甚至做了

var_dump($facebook_data['name']) 

它被返回为"约翰·史密斯",没有额外的空格或任何东西。

您在循环中使用$username变量,因此如果原始用户名已经存在,您将获得一个带空格的用户名。

下面我创建了一个可以附加到的$clean_username变量,这样你就可以得到username6而不是username123456,例如:

function create_username($username)
{
   global $db;
   $valid = false;
   $counter = 0;
   $clean_username = $new_username = str_replace(' ', '', $username);
   while (!$valid) 
   {
       $counter++;
       $is_username = $db->count_rows('users', "WHERE username='" . $new_username . "'");
       if ($is_username)
       {
           $new_username = $clean_username . $counter;
       }  
       else 
       {
           $valid = true;
       }
   }
   $new_username = strtolower($new_username);
   return $new_username;
}
if ($is_username)
{
    $new_username = $username . $counter;
}

正确的是

if ($is_username)
{
    $new_username = $new_username . $counter;
} 

相关内容

最新更新