【问题标题】:Random names for files in php 7php 7中文件的随机名称
【发布时间】:2017-12-02 09:33:17
【问题描述】:

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

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

【问题讨论】:

  • 使用 uniqid() 没有错。它没有被弃用或任何东西。你还不如说echo太老了。
  • 虽然,wrt uniqid -“此函数不会创建随机或不可预测的字符串。此函数不得用于安全目的。” - stackoverflow.com/questions/4070110/how-unique-is-uniqid 所以“随机”的要求应该用于选择解决方案..

标签: php php-7.1


【解决方案1】:

您可以修改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;
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 2011-07-22
    • 1970-01-01
    • 2019-03-23
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多