Comment faire “uniqid” uniquement à donner des chiffres?
J'ai le code suivant qui j'ai mis en place à partir de différents exemples des tutoriels:
<?php
$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = crypt(uniqid(rand(),1));
$rndid = strip_tags(stripslashes($rndid));
$rndid = str_replace(".","",$rndid);
$rndid = strrev(str_replace("/","",$rndid));
$rndid = substr($rndid,0,$random_id_length);
$orderid = "$stamp-$rndid";
$orderid = str_replace(".", "", "$orderid");
echo($orderid);
?>
VIOLON: http://phpfiddle.org/main/code/27d-qfw
Je voudrais créer un certain nombre; l'heure actuelle, suivi de 6 chiffres de nombre aléatoire.
Par exemple: 20130710045730-954762
Cependant, au moment où les chiffres aléatoires également inclure des lettres.
Par exemple: 20130710045730-Z3sVN2
Comment puis-je modifier le code suffit d'inclure les numéros? Toute aide est appréciée.
- Juste la carte des lettres aux chiffres?
- vous pouvez utiliser
str_pad(rand(0,999999),6, "0", STR_PAD_LEFT)
vous avez un 1 sur un million de chances de collision pour des postes dans la même seconde.
Vous devez vous connecter pour publier un commentaire.
uniqid()
déjà du nombre de retours. Mais dans leur représentation hexadécimale. En général, vous pouvez simplement convertir en décimales:La valeur ne peut significatives observées sur un système 64 bits, car il est très grand et au-delà de la limite de 32 bits entier signé (comme php est un). Et c'est le point.
uniqid()
utilise de tels grands nombres de concert avec d'autres techniques afin de garantir une haute qualité de uniqness. Si vous utilisez seulement 6 chiffres, vous ne pouvez pas accorder plus de cette façon. Le risque que les valeurs entrent en collision sera élevé.Je vous propose de générer une application à l'échelle de uniqness à l'aide d'une valeur auto_increment dans une base de données ou quelque chose de semblable.
hexdec()
bien sûr! ont changé de cette!Si c'est une chaîne de caractères aléatoires, utiliser quelque chose comme ceci:
Exemple: http://codepad.org/eukiOb6S
Fn modifié à partir de https://stackoverflow.com/a/4356295/1265817
Utiliser ce code.Je pense que ce sera de l'aide.
rand(100000,999999)
Entrez le numéro deux chiffres qui voulez-vous
mt_rand
est plus aléatoire.rand()
.Utiliser ceci: