Как вы генерируете случайные имена для файлов на php7? random_bytes мы возвращаем символы, такие как _шИ ¶.png Какую еще функцию я могу использовать?

Изменить: я думаю, я мог бы использовать uniqueid (), но разве он не устарел?

0
pidari 2 Дек 2017 в 04:18

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;
}

Это довольно грубое решение, но оно работает. Обратите внимание, что эта конкретная реализация будет немного смещена в сторону определенных персонажей.

Если вам действительно не нужны случайные имена файлов, может быть проще просто пронумеровать их, что позволяет избежать конфликтов.

1
Lux 2 Дек 2017 в 01:33