最近用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个)。最后我也是使用了这个函数。
这个三个方法的思路同样可用于生成中文用户名。