SORU
12 Mayıs 2009, Salı


Nasıl rastgele bir dize oluşturmak için PHP kullanarak?

Rand rasgele tamsayılar oluşturur PHP, ama rastgele bir dize oluşturmak için en iyi yolu nedir işlevi olduğunu biliyorum:

, 9 özgün dize karakter

$string = 'abcdefghi';

Örnek rasgele dize 6 karakter sınırlayıcı

$string = 'ibfeca';

Fonksiyonlar bu tip bir ton buldum, temelde her adımda arkasındaki mantığı anlamaya çalışıyorum. GÜNCELLEME:

GÜNCELLEME: Bu fonksiyonu gerekli karakter herhangi bir miktarda üretmek gerekir.

Eğer parçalar yanıt yorum yapın.

CEVAP
12 Mayıs 2009, Salı


Gelmediğini açıklığa kavuşturmak tüm soruları sordum benim yorum, ama ben öyleymiş gibi kabul edeceğiz istediğiniz bir işlevi bir dize "olası" bir karakter ve bir uzunlukta bir dize döndürür. İstediğin gibi iyice yorumladı, ben daha fazla değişken kullanarak normalde, açıklık getirmek için:

function get_random_string($valid_chars, $length)
{
    // start with an empty random string
    $random_string = "";

    // count the number of chars in the valid chars string so we know how many choices we have
    $num_valid_chars = strlen($valid_chars);

    // repeat the steps until we've created a string of the right length
    for ($i = 0; $i < $length; $i  )
    {
        // pick a random number from 1 up to the number of valid chars
        $random_pick = mt_rand(1, $num_valid_chars);

        // take the random character out of the string of valid chars
        // subtract 1 from $random_pick because strings are indexed starting at 0, and we started picking at 1
        $random_char = $valid_chars[$random_pick-1];

        // add the randomly-chosen char onto the end of our string so far
        $random_string .= $random_char;
    }

    // return our finished random string
    return $random_string;
}

Örnek veri ile bu işlevi çağırmak için böyle bir şey diyebilirsin:

$original_string = 'abcdefghi';
$random_string = get_random_string($original_string, 6);

Bu işlev, geçerli karakter için geçen özgünlük için kontrol yok unutmayın. Örneğin, adı geçerli bir karakter dize 'AAAB' verilecek üç kat daha fazla tercih için her harfi B olabilir olarak kabul bir hata ya da bir özelliği, bağlı ihtiyacı var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007
  • Epic Tutorials for iPhone, iPad and iOS

    Epic Tutoria

    18 EYLÜL 2011
  • Julian Smith

    Julian Smith

    31 EKİM 2006