随机生成英文字母 php,PHP生成随机英文用户名

1b4a44fdfaadf2df647985f5f6907eaf.png

最近用wordpress来做英文的博客,需要虚构一些随机的英文用户名来冒充访客发表评论,因为对PHP不熟悉(压根没学过),只能在百度和google查找方法。办法有3个:

1、随机字母数字组合法

这个方法的思路:26个字母大小写 +10个数字(0~9) 随机组合成6到10个的字符串最为用户名,代码如下:

function random_user($len = 8)

{

$user = '';

$lchar = 0;

$char = 0;

for($i = 0; $i < $len; $i++)

{

while($char == $lchar)

{

$char = rand(48, 109);

if($char > 57) $char += 7;

if($char > 90) $char += 6;

}

$user .= chr($char);

$lchar = $char;

}

return $user;

}

调用方法(默认生成8个字符串):

生产的英文用户名如下:

4c3yXssf,6IG0bdfa,u5NDh5d3,spBhdgPn,49otf8ub,NE8zg2dS

缺点很明显:不靠谱,可读性差,一看就知道是代码生成的。

2、调用现成的API

这个思路也很简单,直接调用可以生成用户数据的API,当然前提是要有这种API才行。我google一下,还真给我找着了:

https://randomuser.me/api/

以json格式直接返回一个用户的各种信息,包括:姓名,性格,年龄,城市,邮箱,头像等等…. 。下面是返回的数据:

{"results":[

{

"gender":"female",

"name":{

"title":"miss",

"first":"frida",

"last":"christiansen"

},

"location":{

"street":"2087 oddenvej",

"city":"ulsted, hals",

"state":"danmark",

"postcode":33076

},

"email":"frida.christiansen@example.com",

"login":{

"username":"brownostrich869",

"password":"blacks",

"salt":"hnroL361",

"md5":"e77b5d194fa24307d94166fdb073489a",

"sha1":"1f7c5119845d31071035ba786cfd1829ca4188de",

"sha256":"37e202da9ee700e3b21a1260de0f2697f2a75357cacd6124e73eee39b21c0f05"

},

"dob":"1977-04-27 18:44:16",

"registered":"2014-12-11 11:11:29",

"phone":"97377508",

"cell":"04206356",

"id":{

"name":"CPR",

"value":"018563-3343"

},

"picture":{

"large":"https://randomuser.me/api/portraits/women/58.jpg",

"medium":"https://randomuser.me/api/portraits/med/women/58.jpg",

"thumbnail":"https://randomuser.me/api/portraits/thumb/women/58.jpg"

},

"nat":"DK"

}

],

"info":{

"seed":"9c5a7af03b97edcf",

"results":1,

"page":1,

"version":"1.1"

}

}

使用说明文档:

https://randomuser.me/documentation

如果使用python调用和处理这个API是没有问题的,但是对于php我就毫无头绪了,只能放弃这个方法。

思路可行,能力有限,日后再研

3、字典随机组合法

方法思路:找出外国人最常用的姓(Most Common Surnames),最常用的名(Most Common Male Names,Most Common Female Names),再随机组合成一个常用的英文用户名。

function random_user()

{

$male_names = array("James","John","Robert","Michael","William","David","Richard","Charles","Joseph","Thomas","Christopher","Daniel","Paul","Mark","Donald","George","Kenneth","Steven","Edward");

$famale_names = array("Mary","Patricia","Linda","Barbara","Elizabeth","Jennifer","Maria","Susan","Margaret","Dorothy","Lisa","Nancy","Karen","Betty","Helen","Sandra","Donna","Carol","Ruth");

$surnames = array("Smith","Jones","Taylor","Williams","Brown","Davies","Evans","Wilson","Thomas","Roberts","Johnson","Lewis","Walker","Robinson","Wood","Thompson","White","Watson","Jackson");

$frist_num = mt_rand(0,19);

$sur_num = mt_rand(0,19);

$type = rand(0,1);

if($type==0){

$username=$male_names[$frist_num]." ".$surnames[$sur_num];

} else {

$username=$famale_names[$frist_num]." ".$surnames[$sur_num];

}

return $username;

}

这里使用了20个常用男性名,20常用个女性名,20个常用的姓来组合用户名,如果需要更多的数据可以看看这里:外国人最常用的100个姓,最常用的100个名。

调用的方法和上面是一样的,生成的英文用户名如下:

Mary Williams,Daniel Johnson,John Jones,Maria Evans,Donna Smith,Barbara Smith

可以看出这个方法生成的英文用户名很靠谱,可读性高,而且可生成数量众多(20*20+20*20 共800个)。最后我也是使用了这个函数。

这个三个方法的思路同样可用于生成中文用户名。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值