Yaratma (sözde) rasgele alfa-sayısal dizeleri

6 Cevap php

PHP 'd79jd8c': Nasıl bir (sözde) rasgele alfa-sayısal dize, gibi bir şey üretebilir?

6 Cevap

Öncelikle bütün olası karakterler ile bir dize olun:

 $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';

Ayrıca range() daha hızlı yapmak için kullanabilirsiniz.

Sonra, bir döngü içinde, rastgele bir numara seçin ve rastgele bir karakter almak için $ karakterleri dize dizin olarak kullanmak, ve dize ekleyebilirsiniz:

 $string = '';
 for ($i = 0; $i < $random_string_length; $i++) {
      $string .= $characters[rand(0, strlen($characters) - 1)];
 }

$ Random_string_length rasgele dize uzunluğudur.

$ RANGE_START, $ RANGE_SIZE ASCII tablosundaki ondalık sütundan bir değerdir: harf, bir dizi almak için ASCII table kullanın.

Ben bu yöntemi to the method described karakter aralığı özellikle başka bir dize içinde tanımlanır nerede karşılaştırıldığında güzel olduğunu bulmak.

// range is numbers (48) through capital and lower case letters (122)
$range_start = 48;
$range_end   = 122;
$random_string = "";
$random_string_length = 10;

for ($i = 0; $i < $random_string_length; $i++) {
  $ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
  // finds the character represented by $ascii_no and adds it to the random string
  // study **chr** function for a better understanding
  $random_string .= chr( $ascii_no );
}

echo $random_string;

Bakınız:

Belki burada bir şey kaçırmış, ama here's a way using the uniqid() function.

Uzun yukarıdaki örnekte olduğu gibi yedi karakterden birini yapmak için, sadece bu deneyin:

$unique_key = substr(md5(rand(0, 1000000)), 0, 7);

Generate Random Strings Using PHP de örnek kod, sadece bunu sağlar. Php biraz bilgi sahibi olan, size ihtiyacınız rastgele dizeler tip almak için bu işlevi özelleştirebilirsiniz:

  • Sadece karakterler mesela ucvtbp3v
  • rakam ve karakter karıştırın örneğin 9JP2E06R
  • karakterleri, rakam ve sembolleri karıştırın örneğin 2sczkf-j

Jeremy'nin cevabı harika. Benim gibi, range () uygulamak için nasıl emin değilseniz, eğer, range () kullanarak benim sürümü görebilirsiniz.

<?php
$character_array = array_merge(range(a, z), range(0, 9));
$string = "";
    for($i = 0; $i < 6; $i++) {
        $string .= $character_array[rand(0, (count($character_array) - 1))];
    }
echo $string;
?>

Bu Jeremy olarak aynı şeyi yapar ama bir dize kullanan birleştirilmiş diziler kullanır, ve o (strlen kullanan sayısı ()) kullanır.