В документации не указано содержание строки; только его длина. Как правило, вы не должны зависеть от этого. Если вы печатаете значение между двумя разделителями, как кавычки, вы можете использовать их в регулярном выражении:
"([^"]+)" ($1 contains the value)
Пока вы разрабатываете для конкретной PHP версии, вы можете проверить его реализацию и предполагать, что он не меняется. Если вы обновляете, вы должны проверить, если предположение все еще действует.
A comment in uniqid
documentation описывает, что он, по существу, шестнадцатеричное число с дополнительным цифровым суффиксом:
if (more_entropy) {
uniqid = strpprintf(0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg() * 10);
} else {
uniqid = strpprintf(0, "%s%08x%05x", prefix, sec, usec);
}
Который дает два возможных выходных форматов:
uniqid()
- 13 символов, hexadecimal number
uniqid('', true)
- 14 - 23 символов, hexadecimal number with floating number suffix computed elsewhere
Если вы используете другие разделители, чем буквенно-цифровые символы и точки, вы можете использовать один из этих простых регулярных выражений, чтобы получить значение в одном из двух форматов:
[0-9a-f]+
[.0-9a-f]+
Если вам нужна гарантия на 100% для любой версии PHP, вы можете написать свою собственную функцию на основе sprintf
.
Я признаю, что маловероятно, что uniqid
значительно изменится; Я ожидал бы создания других расширений для предоставления разных форматов. Another comment in uniqid
documentation показывает реализацию UUID, совместимую с RFC 4211. Был также обсужден on stackoverflow about it.