php 7 中文件的随机名称

Random names for files in php 7

如何为 php7 中的文件生成随机名称? random_bytes 我们返回像 _шИ ¶.png 这样的符号我还可以使用什么其他功能?

编辑:我想我可以使用 uniqueid() 但它是不是有点旧?

您可以修改 random_bytes 的输出以将其限制在可打印字符范围内。

示例:

// Ascii 126=~, 32=[space], so the lower ASCII printable block
define('RANDOMIZVI_RANGE_DEFAULT', 126-32);

function randomizvi(int $length, $range = RANDOMIZVI_RANGE_DEFAULT){
    $bytes = random_bytes($length);
    for($i = 0;$i < $length;$i++){
        $bytes[$i] = chr((ord($bytes[$i]) % $range) + 32);
    }
    return $bytes;
}

这是一种粗略的解决方案,但它确实有效。请注意,此特定实现会略微偏向某些字符。

如果您真的不需要随机文件名,只给它们编号可能会更简单,这样可以避免冲突的可能性。