PHP如何呈现唯一键?

PHP如何呈现唯一键?,php,random,key,generated-code,Php,Random,Key,Generated Code,我想渲染这样一个键或类似的键,但我不希望在开头出现“-”符号。我的当前代码意味着这个字符也可以在开始时生成,并且我希望它永远不会在开始和结束时生成,而是只在X字符从结尾和开始之后的中间生成,其中x是从边字符的数量。 6ldba6abxoasj0aotj8rc-NbzpzAPgVaAz1bnAE 我的代码 // Generowanie Unique Key if(!function_exists('genetateUniqueKey')){ function genetateUniqueK

我想渲染这样一个键或类似的键,但我不希望在开头出现“-”符号。我的当前代码意味着这个字符也可以在开始时生成,并且我希望它永远不会在开始和结束时生成,而是只在X字符从结尾和开始之后的中间生成,其中x是从边

字符的数量。
6ldba6abxoasj0aotj8rc-NbzpzAPgVaAz1bnAE

我的代码

// Generowanie Unique Key
if(!function_exists('genetateUniqueKey')){
    function genetateUniqueKey($length = 40){
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0987654321-'.time();
        $charactersLength = strlen($characters);
        $randomString = '';
        for($i = $length; $i > 0; $i--){
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }
}

提前感谢您的帮助:)

我正在对您的代码进行一些更改

将根据$length中的值从两侧修剪字符串

编辑:
对不起,我给错代码了。试试这个:

// Generowanie Unique Key
if (!function_exists('genetateUniqueKey')) {
    function genetateUniqueKey($length = 40)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0987654321';
        $randomString = str_shuffle($characters) . "-" . str_shuffle($characters);
        return substr($randomString, 55, $length);
    }
} 

$characters
排除“-”的位置生成x个字符,然后在
$characters
排除“-”的位置生成更多字符,然后在排除“-”的位置再次生成x个字符…!?为什么不完全删除“-”呢?@deceze但我应该如何做才能使其工作良好,并考虑到整个生成密钥的长度,并且在这样一个块中是“可伸缩的”,例如,当我给出长度20时,长度将减少一半,这个字符可以在哪一个之后出现?@Kondzio:字符串的长度对它有什么影响?对于任何长度为X的字符串。。。生成1个字符,其中“-”不是选项;生成X-2个字符,其中“-”是一个选项;生成1个字符,其中“-”不是选项;连接三个结果。你试过了吗?什么不起作用?不要泄气,但是,这是一个雄心勃勃的计划,如果你从这个问题开始……不管怎样,
-
可能意味着要重述一下。如果它对你来说没有任何意义,为什么要把它包括在这些非常具体的规则中…?洗牌字符串和重复挑选随机字符是非常不同的算法,在熵方面具有非常不同的属性。这段代码不起作用,因为它显示了100多个字符,所以你可能还没有检查它是否显示了正确的长度对不起,我错误地给出了错误的代码。我做了一些改变。请试一试