目前我得到的代码是in5v6wyio0er5isu9rv4,那么如何在ID中获得更多数字和更少的字母?
下面是我已完成的代码
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$randomString = '';
for ($i = 0; $i < 20; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
echo $randomString;
我想以这种格式获取身份证号码6437270e-c2d4-4524-8a26-ad311c4ca55e。
答案 0 :(得分:0)
如果您想要更多号码,请在可用字符串中复制它们以获得更高的优先级:
$characters = '012345678901234567890123456789abcdefghijklmnopqrstuvwxyz';
数字格式,只需自己预先格式化:
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$randomString = '';
for ($i = 0; $i < 24; $i++) {
if($i % 5 == 0){
// Add "-" each 5 characters
$randomString .= "-";
}else{
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
}
echo $randomString;
答案 1 :(得分:0)
您需要修复for循环。你告诉PHP从inflect.irregular 'operador', 'operadores'
添加一个随机字符20次,所以它永远不会打印像XXXX-XXXX-XXX等,因为&#34; - &#34; $characters
中的字符不均匀。我看到两个可能的答案:
$characters
对要插入的所有for ($i = 0; $i < 20; $i++) {
if (i === 8) { // at the 9th position, add an "-"
$randomString .= "-";
}
else {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
}
执行此操作。
至于希望包含更多数字而不是字母,请创建两个不同的字符串:"-"
,或者只是在数字后$numbers = '0123456789'; $letters = 'abcd...'
开始随机数(即$characters
)如果您想要rand(10, strlen($characters) - 1)
的某些地方的字母和其他地方的数字,请在10
之前收到一封信或在$randomString
之前结束。
如果你想增加获得号码的几率,可以使用HuyTrịnh的精彩建议:你可以在$characters
添加更多数字或字符,以增加获得随机字符/数字的几率。
答案 2 :(得分:0)
根据您的代码做一些编辑,并且&#39;我的菜鸟方式
$characters ='012345678901234567890123456789abcdefghijklmnopqrstuvwxyz0123456789';
$randomString = '';
$count = strlen($characters);
for ($i = 0; $i < 32; $i++) {
$random = rand(0, $count - 1);
if($i == 8 || $i == 13 || $i == 17 || $i == 21){
$randomString .= "-";
}
$randomString .= $characters[$random];
}
echo $randomString;