kac*_*ack 8 php string random laravel
我正在开发一个关于Laravel的项目,我想以这种格式生成一个随机数:任意位置的一个字符和其余的整数.示例:C87465398745635,87474M745436475,98487464655378J8等,这是我的控制器:
function generatePin( $number ) {
$pins = array();
for ($j=0; $j < $number; $j++) {
$string = str_random(15);
$pin = Pin::where('pin', '=', $string)->first();
if($pin){
$j--;
}else{
$pins[$j] = $string;
}
}
return $pins;
}
Run Code Online (Sandbox Code Playgroud)
但它似乎是生成这样的其他东西:ZsbpEKw9lRHqGbv,i7LjvSiHgeGrNN8,pyJEcjhjd3zu9Su我已尽力而为但没有成功,请任何帮助解决方案将不胜感激,谢谢
Luí*_*ruz 14
如果你想像你说的那样生成随机字符串,请替换:
$string = str_random(15);
Run Code Online (Sandbox Code Playgroud)
同
// Available alpha caracters
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
// generate a pin based on 2 * 7 digits + a random character
$pin = mt_rand(1000000, 9999999)
. mt_rand(1000000, 9999999)
. $characters[rand(0, strlen($characters) - 1)];
// shuffle the result
$string = str_shuffle($pin);
Run Code Online (Sandbox Code Playgroud)
编辑:
之前,代码并没有始终生成随机字母字符.那是因为Laravel str_random生成一个随机字母数字字符串,有时该函数返回一个数值(参见docs).
在 Laravel 中,Bootstrap 中已经有 Str 类的别名
\nuse Illuminate\\Support\\Str;\n//...\necho Str::upper(Str::random(16)); // J1NMDQAFD5LM9DK5\nRun Code Online (Sandbox Code Playgroud)\n生成随机数
\necho generateRandomString(6) // Ex j4nDqQRiYafD\nRun Code Online (Sandbox Code Playgroud)\nfunction generateRandomString(int $n=0)\n{\n $al = [\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'j\',\'k\'\n , \'l\', \'m\', \'n\', \'o\', \'p\', \'q\', \'r\', \'s\', \'t\', \'u\',\n \'v\', \'w\', \'x\', \'y\', \'z\', \'A\', \'B\', \'C\', \'D\', \'E\',\n \'F\',\'G\',\'H\',\'I\',\'J\',\'K\', \'L\', \'M\', \'N\', \'O\', \'P\',\n \'Q\', \'R\', \'S\', \'T\', \'U\', \'V\', \'W\', \'X\', \'Y\', \'Z\',\n \'0\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\'];\n\n $len = !$n ? random_int(7, 12) : $n; // Chose length randomly in 7 to 12\n\n $ddd = array_map(function($a) use ($al){\n $key = random_int(0, 60);\n return $al[$key];\n }, array_fill(0,$len,0));\n return implode(\'\', $ddd);\n}\nRun Code Online (Sandbox Code Playgroud)\n使用范围函数
\n\n\nrange \xe2\x80\x94 创建包含一系列元素的数组\n创建包含一系列元素的数组。
\n
使用array_rand函数
\n\n\n从数组中选取一个或多个随机条目,并返回随机条目的键(或多个键)。它使用不适合加密目的的伪随机数生成器。
\n