Как сгенерировать UUID с помощью PHP?

168
04 апреля 2021, 21:30

Нужна строка вот такого вида, которая вроде как состоит из случайных чисел:

f23e4567-e89b-42d3-a456-426655440000

Что это за строка и как получить её средствами PHP?

Answer 1

Перед нами UUID v4, который имеет формат вида:

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

Цифра четыре в примере в вопросе находится на этом же месте. Подробное определение формата есть в RFC 4122. В зависимости от требовательности софта, для которого вы генерируете этот UUID, может быть можно будет использовать полностью случайную строку, но если нужно чтобы UUID был по формату (например, когда софт проверяет что за UUID вы ему подсовываете), стоит использовать готовую и протестированную библиотеку для получения UUID именно нужной версии.

Например, ramsey/uuid, которая устанавливается обычно, через Composer. Пример использования:

$uuid4 = \Ramsey\Uuid\Uuid::uuid4();
echo $uuid4;

Точно таким же образом можно получить UUID других версий.

Ещё одна причина использовать готовые библиотеки: они страхуют вас от ошибок при получении случайных строк. Например, если наивно использовать mt_rand() для получения случайных чисел, то можно попасть в неприятную ситуацию когда вашу строку смогут угадать посторонние, что может быть возможно потому что mt_rand() не генерирует криптографически безопасные значения.

READ ALSO
curl отдает 403 Forbidden

curl отдает 403 Forbidden

При парсинге скрипт отдает 403 ошибку, как я понимаю сервер понимает, что к нему пытается зайти скрипт и просто блокирует заход, при заходе...

104