短随机数字串的PHP代码,5个字符

时间:2013-08-26 12:15:38

标签: php random numbers

我遇到了问题,即时尝试使用php生成5或7个字符长的数字代码, 但是下面的代码确实包含了字母,我只需要数字,提前谢谢

$newgid = substr(md5(microtime()),rand(0,9),5);

7 个答案:

答案 0 :(得分:4)

我会使用rand()生成0到99999之间的数字,并将其视为字符串。

$newgid = sprintf('%05d', rand(0, 99999));

答案 1 :(得分:4)

我只需使用mt_rand(),如下所示:

<?php
$a = '';
for ($i = 0; $i<7; $i++) 
{
    $a .= mt_rand(0,9);
}
echo $a;
?>

Demo!

答案 2 :(得分:1)

您可以使用以下内容轻松生成5位数代码,我相信您可以从这里开始如何使其长7位数。

$string='';
for($i=0;$i<5;$i++)
{
    $string.=rand(0,9);
}
echo $string;

答案 3 :(得分:1)

 function randomPrefix($length=5) {       
        $random = "";
        srand((double) microtime() * 1000000);
        $data = "0123456789";
       // $data = "A0B1C2DE3FG4HIJ5KLM6NOP7QR8ST9UVW0XYZ";
        for ($i = 0; $i < $length; $i++) {
            $random .= substr($data, (rand() % (strlen($data))), 1);
        }

        return $random;
    }

答案 4 :(得分:1)

function createPin($len){
    $maxNbrStr = str_repeat('9',$len);
    $maxNbr = intval($maxNbrStr);
    $n = mt_rand(0, $maxNbr);
    $pin = str_pad($n, $len, "0", STR_PAD_LEFT);
    return $pin;
}

这是一个简短的&amp;甜蜜的功能,将产生一个所需长度的数字串。

答案 5 :(得分:0)

如果您不介意数字从10000开始而不是零,这是最短的方式:

mt_rand(10000, 99999)

答案 6 :(得分:0)

对于以后遇到此问题的读者,我建议以下内容:

@model Movement

@{
    Layout = "~/Views/Shared/_LayoutEditor.cshtml";
}

<div class="editorMovement">
    @using (Html.BeginCollectionItem("movements"))
    {
        <span>Name: </span> @Html.TextBoxFor(m => m.Name);
    }
    <a href="#" class="deleteMovement">delete</a>
</div>

@section Scripts {
    <script>
        $(document).ready(function () {
            $("a.deleteMovement").on("click", function () {
                $(this).parents("div.editorMovement:first").remove();
                return false;
            });
        });
    </script>
}

上面的函数不是使用循环,而是使用递归;它会连续调用自己,向字符串添加一个数字,直到字符串长度达到指定的值。您可以随时随地通过调用以下命令生成任意长度(即5)的字符串:

function generateNumericString(INT $len, STRING $str = '') {
    if (strlen($str) < $len) {
        return generateNumericString($len, $str . random_int(0, 9));
    }
    return $code;
}

此外,此方法还允许序列中的第一位数字包含0。

尽管我更喜欢第一种方法,但是如果您知道绝对不需要超过5个数字,则可以从技术上实现以下目的:

generateNumericString(5);

这将生成一个6位数的整数,然后将其强制转换为字符串并返回第一位数之后的所有内容。删除第一个数字将保留0作为可能的第一个字符。

编辑:random_int()代替其他方法来确保生成的数字为cryptographically secure