Bir giriş dizesi / url için benzersiz alfa sayısal dize yarat?

2 Cevap

Ben bir url olabilir bir giriş dizesi için daha az ya da 10 karaktere eşit benzersiz bir dize oluşturmak istiyorum

http://stackoverflow.com/questions/ask

VEYA bir alfa sayısal dizge

programming124

ama sonuç her giriş için benzersiz olmalıdır ... Eğer php projeler için kullanmak onların herhangi bir işlev veya sınıf mı ... Teşekkürler ...

2 Cevap

Eğer benzersiz ve rasgele bir dize istiyorsanız, rastgele bir dize oluşturmak için aşağıdaki işlevi kullanabilirsiniz:

function randString($length) {
    $charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    $str = '';
    while ($length-- > 0) {
        $str .= $charset[rand() % 62];
    }
    return $str;
}

Eğer yeni bir dize ürettikten sonra bu dize zaten varsa, veritabanı bakmak. Eğer öyleyse benzersiz bir dize oluşturulan ettik kadar, bu adımı tekrarlayın. Sonra veritabanında yeni dizesini depolamak:

do {
    $randString = randString(10);
    // look up your database if $randString already exists and store the result in $exists
} while ($exists);
// store new random string in database

Php mevcut basit işlevi uniqid. Bu söz, ve alışkanlık yük dengeleme ile iyi çalışır olduğunu biraz daha uzun olduğunu, ancak süper basit bir şey yapıyorsun, her şey yolunda çalışmalıdır.