douwang9650 2014-11-06 20:31
浏览 10
已采纳

使用PHP函数创建没有空格的用户名..但不知何故空间正在添加?

I have a PHP script that generates a username based on when someone logs in via Facebook.

I am calling it like this:

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

And the function is:

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;

}

The problem is, if I have a user that is called "johnsmith" and someone with the name of "john smith" registers, it generates a username that is "john smith1" instead of "johnsmith1". What am I doing wrong?

I even did a

var_dump($facebook_data['name']) 

and it is returned as "John Smith", with no extra spaces or anything.

  • 写回答

2条回答 默认 最新

  • dpi9530 2014-11-06 20:37
    关注

    Your are using the $username variable in your loop so you will get a username with spaces if the original username already exists.

    Below I've created a $clean_username variable that can be appended to so you get username6 instead of username123456 for example:

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来