Tạo chuỗi ngẫu nhiên trong php

Đến một thời điểm nào đó chắc hẳn bạn sẽ cần tạo một chuỗi ngẫu nhiên (random string) để xác nhận tài khoản hoặc 1 cái gì đó mà bạn cần tới, hôm nay mình sẽ giúp các bạn 1 đoạn code rất đơn giản để làm công việc này. Nào chúng ta cùng bắt đầu nào.. Đầu tiên Chúng ta sẽ đặt tên hàm này là ...

Đến một thời điểm nào đó chắc hẳn bạn sẽ cần tạo một chuỗi ngẫu nhiên (random string) để xác nhận tài khoản hoặc 1 cái gì đó mà bạn cần tới, hôm nay mình sẽ giúp các bạn 1 đoạn code rất đơn giản để làm công việc này. Nào chúng ta cùng bắt đầu nào..

Tạo chuỗi ngẫu nhiên trong php

Đầu tiên Chúng ta sẽ đặt tên hàm này là rand_string, hàm này sẽ yêu cầu 1 tham số $length ( chiều dài của chuỗi )

function rand_string( $length ) {
}

Kế tiếp chúng ta sẽ tạo ra 1 chuỗi bao gồm tất cả các kí tự mà bạn muốn dùng làm hàm ngẫu nhiên

$chars = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”;

Sau đó chúng ta sẽ tạo ra 1 vòng lặp, vòng lặp này được dùng để tạo ra các kí tự ngẫu nhiên trong chuỗi chúng ta vừa tạo trước đây, bạn xem đoạn code sau sẽ hiểu rõ hơn ý mình muốn nói

1
2
3
4
5
6

$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
  $str .= $chars[ rand( 0, $size - 1 ) ];
}
?>

Việc cuối cùng là chúng ta dùng hàm substr dùng để cắt ra số lượng kí tự mà chúng ta muốn lấy ra

$str = substr( str_shuffle( $chars ), 0, $length );

vậy là đã hoàn tất , bây giờ chúng ta chỉ cần ráp tất cả các đoạn code trên là xong.

1
2
3
4
5
6
7
8
9
10

function rand_string( $length ) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ rand( 0, $size - 1 ) ];
 }
return $str;
}
?>

Cách sử dung:

Rất đơn giản khi nào bạn cần sử dụng thì bạn chỉ cần gọi hàm ra như sau:

$my_string = rand_string( 5 );

Chúc các bạn thành công !

Tags: hoc php php code php string ramdom string tao chuoi ngau nhien thu thuat php

Chuyên Mục: PHP

Bài viết được đăng bởi webmaster

answer

1255

Tạo chuỗi ngẫu nhiên trong php

Để trả lời câu hỏi này cụ thể, hai vấn đề:

  1. $randstring không nằm trong phạm vi khi bạn lặp lại nó.
  2. Các nhân vật không được nối với nhau trong vòng lặp.

Đây là một đoạn mã với các sửa chữa:

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

Xuất chuỗi ngẫu nhiên với cuộc gọi dưới đây:

// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();

Xin lưu ý rằng điều này tạo ra chuỗi ngẫu nhiên dự đoán. Nếu bạn muốn tạo mã thông báo an toàn, hãy xem câu trả lời này .

1255 hữu ích 5 bình luận chia sẻ

answer

341

Tạo chuỗi ngẫu nhiên trong php

Lưu ý: str_shuffle()sử dụng nội bộ rand(), không phù hợp cho mục đích mã hóa (ví dụ: tạo mật khẩu ngẫu nhiên). Bạn muốn một trình tạo số ngẫu nhiên an toàn thay thế. Nó cũng không cho phép các nhân vật lặp lại.

Một cách nữa.

CẬP NHẬT (bây giờ điều này tạo ra bất kỳ độ dài của chuỗi):

function generateRandomString($length = 10) {
    return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
}

echo  generateRandomString();  // OR: generateRandomString(24)

Đó là nó. :)

341 hữu ích 5 bình luận chia sẻ

answer

283

Tạo chuỗi ngẫu nhiên trong php

Có rất nhiều câu trả lời cho câu hỏi này, nhưng không có câu trả lời nào sử dụng Trình tạo số giả ngẫu nhiên an toàn (CSPRNG).

Câu trả lời đơn giản, an toàn và chính xác là sử dụng RandomLib và không phát minh lại bánh xe.

Đối với những người khăng khăng phát minh ra giải pháp của riêng bạn, PHP 7.0.0 sẽ cung cấp random_int()cho mục đích này; nếu bạn vẫn còn trên PHP 5.x, chúng tôi đã viết một polyfill PHP 5random_int() để bạn có thể sử dụng API mới ngay cả trước khi bạn nâng cấp lên PHP 7.

Tạo an toàn các số nguyên ngẫu nhiên trong PHP không phải là một nhiệm vụ tầm thường. Bạn phải luôn luôn kiểm tra với các chuyên gia mật mã StackExchange thường trú trước khi bạn triển khai một thuật toán tự trồng trong sản xuất.

Với một trình tạo số nguyên an toàn tại chỗ, việc tạo một chuỗi ngẫu nhiên với CSPRNG là một cuộc dạo chơi trong công viên.

Tạo một chuỗi ngẫu nhiên, an toàn

/**
 * Generate a random string, using a cryptographically secure 
 * pseudorandom number generator (random_int)
 * 
 * For PHP 7, random_int is a PHP core function
 * For PHP 5.x, depends on https://github.com/paragonie/random_compat
 * 
 * @param int $length      How many characters do we want?
 * @param string $keyspace A string of all possible characters
 *                         to select from
 * @return string
 */
function random_str($length, $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
    $pieces = [];
    $max = mb_strlen($keyspace, '8bit') - 1;
    for ($i = 0; $i < $length; ++$i) {
        $pieces []= $keyspace[random_int(0, $max)];
    }
    return implode('', $pieces);
}

Cách sử dụng :

$a = random_str(32);
$b = random_str(8, 'abcdefghijklmnopqrstuvwxyz');

Bản trình diễn : https://3v4l.org/b4PST (Bỏ qua các lỗi PHP 5; nó cần Random_compat)

283 hữu ích 5 bình luận chia sẻ

answer

124

Tạo chuỗi ngẫu nhiên trong php

Tạo một chuỗi hexdec dài 20 char:

$string = bin2hex(openssl_random_pseudo_bytes(10)); // 20 chars

Trong PHP 7 ( Random_bytes () ):

$string = base64_encode(random_bytes(10)); // ~14 chars, includes /=+
// or
$string = substr(str_replace(['+', '/', '='], '', base64_encode(random_bytes(32))), 0, 32); // 32 chars, without /=+
// or
$string = bin2hex(random_bytes(10)); // 20 chars, only 0-9a-f

124 hữu ích 5 bình luận chia sẻ

answer

81

Tạo chuỗi ngẫu nhiên trong php

@tasmaniski: câu trả lời của bạn đã làm việc cho tôi. Tôi đã có cùng một vấn đề, và tôi sẽ đề nghị nó cho những người đang tìm kiếm cùng một câu trả lời. Đây là từ @tasmaniski:

php 
    $random = substr(md5(mt_rand()), 0, 7);
    echo $random;
?>

81 hữu ích 5 bình luận chia sẻ

answer

43

Tạo chuỗi ngẫu nhiên trong php

Tùy thuộc vào ứng dụng của bạn (tôi muốn tạo mật khẩu), bạn có thể sử dụng

$string = base64_encode(openssl_random_pseudo_bytes(30));

Là cơ sở64, chúng có thể chứa =hoặc -cũng như các ký tự được yêu cầu. Bạn có thể tạo một chuỗi dài hơn, sau đó lọc và cắt nó để loại bỏ những chuỗi đó.

openssl_random_pseudo_bytesdường như là cách được đề xuất để tạo một số ngẫu nhiên thích hợp trong php. Tại sao randtôi không sử dụng /dev/random.

43 hữu ích 5 bình luận chia sẻ

answer

25

Tạo chuỗi ngẫu nhiên trong php

Tôi biết điều này có thể hơi muộn với trò chơi, nhưng đây là một lớp đơn giản tạo ra một chuỗi ngẫu nhiên thực sự mà không có bất kỳ vòng lặp cấp độ kịch bản hoặc sử dụng các thư viện openssl.

echo substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,10))),1,10);

Để phá vỡ nó để các tham số rõ ràng

// Character List to Pick from
$chrList = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

// Minimum/Maximum times to repeat character List to seed from
$chrRepeatMin = 1; // Minimum times to repeat the seed string
$chrRepeatMax = 10; // Maximum times to repeat the seed string

// Length of Random String returned
$chrRandomLength = 10;

// The ONE LINE random command with the above variables.
echo substr(str_shuffle(str_repeat($chrList, mt_rand($chrRepeatMin,$chrRepeatMax))),1,$chrRandomLength);

Phương pháp này hoạt động bằng cách lặp lại ngẫu nhiên danh sách ký tự, sau đó xáo trộn chuỗi kết hợp và trả về số lượng ký tự được chỉ định.

Bạn có thể chọn ngẫu nhiên thêm điều này, bằng cách ngẫu nhiên độ dài của chuỗi được trả về, thay thế $chrRandomLengthbằng mt_rand(8, 15)(đối với một chuỗi ngẫu nhiên từ 8 đến 15 ký tự).

25 hữu ích 5 bình luận chia sẻ

answer

24

Tạo chuỗi ngẫu nhiên trong php

function generateRandomString($length = 15)
{
    return substr(sha1(rand()), 0, $length);
}

Tada!

24 hữu ích 5 bình luận chia sẻ

answer

23

Tạo chuỗi ngẫu nhiên trong php

Một cách tốt hơn để thực hiện chức năng này là:

function RandomString($length) {
    $keys = array_merge(range(0,9), range('a', 'z'));

    $key = "";
    for($i=0; $i < $length; $i++) {
        $key .= $keys[mt_rand(0, count($keys) - 1)];
    }
    return $key;
}

echo RandomString(20);

mt_randlà ngẫu nhiên hơn theo điều nàyđiều này trong php7. randchức năng là một bí danh của mt_rand.

23 hữu ích 1 bình luận chia sẻ

answer

19

Tạo chuỗi ngẫu nhiên trong php

$randstringtrong phạm vi chức năng không giống như phạm vi mà bạn gọi nó. Bạn phải gán giá trị trả về cho một biến.

$randstring = RandomString();
echo $randstring;

Hoặc chỉ trực tiếp lặp lại giá trị trả về:

echo RandomString();

Ngoài ra, trong chức năng của bạn, bạn có một chút sai lầm. Trong vòng lặp for, bạn cần sử dụng .=để mỗi ký tự được nối vào chuỗi. Bằng cách sử dụng, =bạn sẽ ghi đè lên nó với mỗi ký tự mới thay vì nối thêm.

$randstring .= $characters[rand(0, strlen($characters))];

19 hữu ích 0 bình luận chia sẻ

answer

14

Tạo chuỗi ngẫu nhiên trong php

Đầu tiên, bạn xác định bảng chữ cái bạn muốn sử dụng:

$alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$special  = '~!@#$%^&*(){}[],./?';
$alphabet = $alphanum . $special;

Sau đó, sử dụng openssl_random_pseudo_bytes()để tạo dữ liệu ngẫu nhiên thích hợp:

$len = 12; // length of password
$random = openssl_random_pseudo_bytes($len);

Cuối cùng, bạn sử dụng dữ liệu ngẫu nhiên này để tạo mật khẩu. Bởi vì mỗi ký tự $randomcó thể tồn tại chr(0)cho đến khi chr(255), mã sử dụng phần còn lại sau khi chia giá trị thứ tự của nó với $alphabet_lengthđể đảm bảo chỉ các ký tự từ bảng chữ cái được chọn (lưu ý rằng làm như vậy sẽ thiên vị tính ngẫu nhiên):

$alphabet_length = strlen($alphabet);
$password = '';
for ($i = 0; $i < $len; ++$i) {
    $password .= $alphabet[ord($random[$i]) % $alphabet_length];
}

Ngoài ra, và nói chung là tốt hơn, là sử dụng RandomLibSecurityLib :

use SecurityLib\Strength;

$factory = new RandomLib\Factory;
$generator = $factory->getGenerator(new Strength(Strength::MEDIUM));

$password = $generator->generateString(12, $alphabet);

14 hữu ích 2 bình luận chia sẻ

answer

9

Tạo chuỗi ngẫu nhiên trong php

Phương pháp ngắn ..

Dưới đây là một số phương pháp ngắn nhất để tạo chuỗi ngẫu nhiên

php
echo $my_rand_strng = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), -15); 

echo substr(md5(rand()), 0, 7);

echo str_shuffle(MD5(microtime()));
?>

9 hữu ích 0 bình luận chia sẻ

answer

9

Tạo chuỗi ngẫu nhiên trong php

Tôi đã kiểm tra hiệu năng của hầu hết các chức năng phổ biến ở đó, thời gian cần thiết để tạo ra 1000'000 chuỗi gồm 32 ký hiệu trên hộp của tôi là:

2.5 $s = substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,32);
1.9 $s = base64_encode(openssl_random_pseudo_bytes(24));
1.68 $s = bin2hex(openssl_random_pseudo_bytes(16));
0.63 $s = base64_encode(random_bytes(24));
0.62 $s = bin2hex(random_bytes(16));
0.37 $s = substr(md5(rand()), 0, 32);
0.37 $s = substr(md5(mt_rand()), 0, 32);

Xin lưu ý không quan trọng là nó thực sự dài bao nhiêu nhưng chậm hơn và cái nào nhanh hơn để bạn có thể chọn theo yêu cầu của mình, bao gồm cả mật mã, sẵn sàng, v.v.

chất nền () xung quanh MD5 đã được thêm vào vì độ chính xác nếu bạn cần chuỗi ngắn hơn 32 ký hiệu.

Vì lợi ích của câu trả lời: chuỗi không được nối nhưng được ghi đè và kết quả của hàm không được lưu trữ.

9 hữu ích 0 bình luận chia sẻ

answer

7

Tạo chuỗi ngẫu nhiên trong php

function rndStr($len = 64) {
     $randomData = file_get_contents('/dev/urandom', false, null, 0, $len) . uniqid(mt_rand(), true);
     $str = substr(str_replace(array('/','=','+'),'', base64_encode($randomData)),0,$len);
    return $str;
}

7 hữu ích 1 bình luận chia sẻ

answer

7

Tạo chuỗi ngẫu nhiên trong php

Cái này được lấy từ các nguồn adminer :

/** Get a random string
* @return string 32 hexadecimal characters
*/
function rand_string() {
    return md5(uniqid(mt_rand(), true));
}

Adminer , công cụ quản lý cơ sở dữ liệu viết bằng PHP.

7 hữu ích 0 bình luận chia sẻ

answer

6

Tạo chuỗi ngẫu nhiên trong php

Một cách rất nhanh là làm một cái gì đó như:

substr(md5(rand()),0,10);

Điều này sẽ tạo ra một chuỗi ngẫu nhiên với độ dài 10 ký tự. Tất nhiên, một số người có thể nói rằng nó nặng hơn một chút về mặt tính toán, nhưng ngày nay các bộ xử lý được tối ưu hóa để chạy thuật toán md5 hoặc sha256 rất nhanh. Và tất nhiên, nếu rand()hàm trả về cùng một giá trị, kết quả sẽ giống nhau, có cơ hội là 1/3276767 giống nhau. Nếu vấn đề bảo mật, thì chỉ cần thay đổi rand()thànhmt_rand()

6 hữu ích 1 bình luận chia sẻ

answer

6

Tạo chuỗi ngẫu nhiên trong php

Chức năng trợ giúp từ khung công tác Laravel 5

/**
 * Generate a "random" alpha-numeric string.
 *
 * Should not be considered sufficient for cryptography, etc.
 *
 * @param  int  $length
 * @return string
 */
function str_random($length = 16)
{
    $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
}

6 hữu ích 1 bình luận chia sẻ

answer

5

Tạo chuỗi ngẫu nhiên trong php

/**
 * @param int $length
 * @param string $abc
 * @return string
 */
function generateRandomString($length = 10, $abc = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
    return substr(str_shuffle($abc), 0, $length);
}

Nguồn từ http://www.xeweb.net/2011/02/11/generate-a-random-opes-az-0-9-in-php/

5 hữu ích 0 bình luận chia sẻ

answer

4

Tạo chuỗi ngẫu nhiên trong php

Phiên bản chỉnh sửa của hàm hoạt động tốt, chỉ một vấn đề tôi tìm thấy: Bạn đã sử dụng sai ký tự để đóng $ ký tự, do đó, ký tự 'đôi khi là một phần của chuỗi ngẫu nhiên được tạo.

Để khắc phục điều này, hãy thay đổi:

$characters = 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;

đến:

$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

Theo cách này, chỉ các ký tự kèm theo được sử dụng và ký tự 'sẽ không bao giờ là một phần của chuỗi ngẫu nhiên được tạo.

4 hữu ích 0 bình luận chia sẻ

answer

4

Tạo chuỗi ngẫu nhiên trong php

Một lớp lót khác, tạo ra một chuỗi ngẫu nhiên gồm 10 ký tự có chữ và số. Nó sẽ tạo một mảng với range(điều chỉnh tham số thứ hai để đặt kích thước), lặp trên mảng này và gán một ascii-char ngẫu nhiên (phạm vi 0-9 hoặc az), sau đó mã hóa mảng để lấy chuỗi.

$str = implode('', array_map(function () { return chr(rand(0, 1) ? rand(48, 57) : rand(97, 122)); }, range(0, 9)));

Lưu ý: chỉ hoạt động trong PHP 5.3+

4 hữu ích 3 bình luận chia sẻ

answer

4

Tạo chuỗi ngẫu nhiên trong php

một đường thẳng.
nhanh chóng cho các chuỗi lớn với một số tính độc đáo.

function random_string($length){
    return substr(str_repeat(md5(rand()), ceil($length/32)), 0, $length);
}

4 hữu ích 2 bình luận chia sẻ

answer

3

Tạo chuỗi ngẫu nhiên trong php

Tôi thích bình luận cuối cùng sử dụng openssl_random_pseudo_bytes, nhưng đó không phải là giải pháp cho tôi vì tôi vẫn phải xóa các ký tự tôi không muốn và tôi không thể có được chuỗi độ dài đã đặt. Đây là giải pháp của tôi ...

function rndStr($len = 20) {
    $rnd='';
    for($i=0;$i<$len;$i++) {
        do {
            $byte = openssl_random_pseudo_bytes(1);
            $asc = chr(base_convert(substr(bin2hex($byte),0,2),16,10));
        } while(!ctype_alnum($asc));
        $rnd .= $asc;
    }
    return $rnd;
}

3 hữu ích 0 bình luận chia sẻ

answer

3

Tạo chuỗi ngẫu nhiên trong php

function randomString($length = 5) {
       return substr(str_shuffle(implode(array_merge(range('A','Z'), range('a','z'), range(0,9)))), 0, $length);
}

3 hữu ích 0 bình luận chia sẻ

answer

3

Tạo chuỗi ngẫu nhiên trong php

Có những lựa chọn thay thế tốt hơn cho vấn đề này, nhiều cái đã được đăng rồi nên tôi chỉ cung cấp cho bạn công cụ của bạn với các bản sửa lỗi

php
function RandomString()
{
    global $randstring ;
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randstring = '';
    for ($i = 0; $i < 10; $i++) {
        $randstring .= $characters[rand(0, strlen($characters))];
    }
    return $randstring;
}

RandomString();

echo $randstring;
?>

bạn cũng có thể quan tâm:

php 


    function RandomString()
    {
        global $randstring ;
        $characters = str_split('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
        array_filter ($characters,function($var)use($characters,&$randstring){
                $randstring .= $characters[rand(0, count($characters)-1)];
        });
        return $randstring;
    }

    RandomString();echo $randstring.'
'
; //.. OR .. $randstring='';echo(RandomString()); ?>

hoặc một số khác:

php

function s($length){
  for($i=0;($i<$length)and(($what=rand(1,3))and( (($what==1)and($t=rand(48,57) ))or (($what==2)and ($t=rand(65,90))) or (($what==3)and ($t=rand(97,122)))  ) and  (print chr($t)));$i++);
}
s(10);

?>

3 hữu ích 2 bình luận chia sẻ

answer

2

Tạo chuỗi ngẫu nhiên trong php

Một cách khác để tạo một chuỗi ngẫu nhiên trong PHP là:

function RandomString($length) {
    $original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
    $original_string = implode("", $original_string);
    return substr(str_shuffle($original_string), 0, $length);
}
echo RandomString(6);

2 hữu ích 0 bình luận chia sẻ

answer

2

Tạo chuỗi ngẫu nhiên trong php

Có một mã đơn giản:

echo implode("",array_map(create_function('$s','return substr($s,mt_rand(0,strlen($s)),1);'),array_fill(0,16,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")));

Có hướng dẫn đơn giản:

  • Để thay đổi độ dài của chuỗi , chỉ thay đổi 16giá trị khác.
  • Để chọn từ các ký tự khác nhau, vui lòng thay đổi chuỗi ký tự.

2 hữu ích 0 bình luận chia sẻ

answer

2

Tạo chuỗi ngẫu nhiên trong php

Tham số một lớp chỉ sử dụng các hàm riêng của PHP , hoạt động kể từ PHP 5.1.0

str_shuffle(implode('', (array_intersect_key(($map =  array_map('chr', array_merge(array_map('mt_rand', array_fill(0, $length = 25, 48), array_fill(0,$length,57)),array_map('mt_rand', array_fill(0, $length, 65), array_fill(0,$length,90)),array_map('mt_rand', array_fill(0, $length, 97), array_fill(0,$length,122))))), array_flip($keys = array_rand($map, $length))))))

2 hữu ích 0 bình luận chia sẻ

answer

1

Tạo chuỗi ngẫu nhiên trong php

php
    /**
     * Creates a random string
     *
     * @param (int) $length
     *   Length in characters
     * @param (array) $ranges
     *   (optional) Array of ranges to be used
     *
     * @return
     * Random string
    */
    function random_string($length, $ranges = array('0-9', 'a-z', 'A-Z')) {
        foreach ($ranges as $r) $s .= implode(range(array_shift($r = explode('-', $r)), $r[1]));
        while (strlen($s) < $length) $s .= $s;
        return substr(str_shuffle($s), 0, $length);
    }

    // Examples:
    $l = 100;
    echo 'Default: ' . random_string($l) . '
'
; echo 'Lower Case only: ' . random_string($l, array('a-z')) . '
'
; echo 'HEX only: ' . random_string($l, array('0-9', 'A-F')) . '
'
; echo 'BIN only: ' . random_string($l, array('0-1')) . '
'
; /* End of file */

1 hữu ích 1 bình luận chia sẻ

answer

1

Tạo chuỗi ngẫu nhiên trong php

function getRandomString($length) {
  $salt = array_merge(range('a', 'z'), range(0, 9));
  $maxIndex = count($salt) - 1;

  $result = '';
  for ($i = 0; $i < $length; $i++) {
    $index = mt_rand(0, $maxIndex);
    $result .= $salt[$index];
  }
  return $result
}

1 hữu ích 0 bình luận chia sẻ

answer

1

Tạo chuỗi ngẫu nhiên trong php

Đây là cách tôi đang thực hiện để có được một khóa ngẫu nhiên duy nhất thực sự:

$Length = 10;
$RandomString = substr(str_shuffle(md5(time())), 0, $Length);
echo $RandomString;

Bạn có thể sử dụng time () vì đây là dấu thời gian Unix và luôn duy nhất so với các ngẫu nhiên khác được đề cập ở trên. Sau đó, bạn có thể tạo md5sum của điều đó và lấy độ dài mong muốn bạn cần từ chuỗi MD5 được tạo . Trong trường hợp này, tôi đang sử dụng 10 ký tự và tôi có thể sử dụng chuỗi dài hơn nếu tôi muốn làm cho nó độc đáo hơn.

Tôi hi vọng cái này giúp được.

1 hữu ích 3 bình luận chia sẻ