我需要一个PHP / JavaScript中的简单脚本来生成12个随机字母数字, 包含8个数字和4个字母。
如:
923x0w357t9w
74qw0875s3q7
有人帮我解决这个问题吗?
答案 0 :(得分:1)
为此,您可以拥有一个包含所有字母和数字的数组,然后使用Math.random 我们可以像这样生成随机的AlphaNumeric值
function getAlphaNumeric(){
var arr =['a','b', 'c', 'd','e','f','g','h','i', 'j', 'k', 'l', 'm', 'n','o','p','q', 'r','s','t','u','v','w','x','y','z'],
letterUsed=0,numberUsed=0,i=0, randomStr='';
for(;i<12;i++){
if((Math.floor(Math.random()*2) === 0 && numberUsed <8) || letterUsed>=4){
randomStr += Math.floor(Math.random()*10);
numberUsed++;
}else{
randomStr += arr[Math.floor(Math.random()*26)];
letterUsed++;
}
}
return randomStr
}
getAlphaNumeric();
答案 1 :(得分:1)
PHP解决方案
要实现此目的,首先要创建一个包含8个字符的随机数字符串。然后创建一个4个字母的随机字符串。最后一步是改变连接结果。
试试这个,
$randNumber = rand(00000000,99999999); // Numeric string with 8 numbers
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
$length = 4;
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)]; // 4 letter string
}
$result = str_shuffle($randNumber.$randomString); // Result
echo $result;
答案 2 :(得分:0)
Laravel有一个很好的功能,这里是代码:
<?php
function quickRandom($length = 16)
{
$pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
}
function random($length = 16)
{
if (function_exists('openssl_random_pseudo_bytes'))
{
$bytes = openssl_random_pseudo_bytes($length * 2);
if ($bytes === false)
{
throw new \RuntimeException('Unable to generate random string.');
}
return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $length);
}
return quickRandom($length);
}
答案 3 :(得分:0)
这是一个简单密码生成器的JavaScript版本。
function password_generator( len ) {
var length = (len)?(len):(10);
var string = "abcdefghijklmnopqrstuvwxyz";
var stringUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var numeric = '0123456789';
var punctuation = '!@#$%&*()_+?=';
var password = "";
var character = "";
var crunch = true;
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
while( password.length<length ) {
entity1 = Math.ceil(string.length * Math.random()*Math.random());
entity2 = Math.ceil(stringUpper.length * Math.random()*Math.random());
entity3 = Math.ceil(numeric.length * Math.random()*Math.random());
entity4 = Math.ceil(punctuation.length * Math.random()*Math.random());
hold = string.charAt( entity1 );
character += hold;
character += numeric.charAt( entity2 );
character += stringUpper.charAt( entity3 );
character += (getRandomInt(1, 4) == 1 ? punctuation.charAt( entity4 ) : '');
password = character;
}
return password;
}
答案 4 :(得分:0)
您可以尝试此代码..
function myFunction() {
var chars = "abcdefghiklmnopqrstuvwxyz";
var nos = "0123456789";
var string_number = 8;
var string_char = 4;
var randomstring = '';
for (var i=0; i<string_number; i++) {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
}
for (var i=0; i<string_char; i++) {
var rnum = Math.floor(Math.random() * nos.length);
randomstring += nos.substring(rnum,rnum+1);
}
for (var i=0; i<12;i++){
var a = randomstring.split("");
var j = Math.floor(Math.random() * (i + 1));
var tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
var result = new Array(a.join(""));
console.log(result);
}
答案 5 :(得分:0)
如果你正在寻找一种在PHP中使用它的方法:
$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$rand = array();
$alphaLength = strlen($alphabet) - 1;
for ($i = 0; $i < 10; $i++) {
$n = rand(0, $alphaLength);
$rand[] = $alphabet[$n];
}
echo implode($rand);