w3schools uniqid online example com_create_guid php guid

php - uniqid - ¿Cómo generar un nuevo GUID?



uniqid php w3schools (5)

Estoy trabajando en un servicio web que requiere un nuevo GUID() pasado como referencia a un método dentro del servicio.

No estoy familiarizado con C# ni con el GUID() object , pero necesito algo similar para PHP (así que cree un nuevo objeto que a mi entender devuelve un empty/blank GUID ).

¿Algunas ideas?


Como alternativa a las opciones anteriores:

$guid = bin2hex(openssl_random_pseudo_bytes(16));

Da una cadena como 412ab7489d8b332b17a2ae127058f4eb


Para los usuarios de Google como yo mismo, encontré este recorte más preciso:

function getGUID(){ if (function_exists(''com_create_guid'')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } }

fuente http://guid.us/GUID/PHP


Puedes probar lo siguiente:

function GUID() { if (function_exists(''com_create_guid'') === true) { return trim(com_create_guid(), ''{}''); } return sprintf(''%04X%04X-%04X-%04X-%04X-%04X%04X%04X'', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); }

Fuente - com_create_guid


Según ¿Hay alguna diferencia entre un GUID y un UUID?

GUID es la implementación de Microsoft del estándar UUID.

Entonces, aquí hay un enlace a las bibliotecas, que le permite crear UUID de los siguientes tipos:

  • versión 1 (basada en el tiempo)
  • versión 3 (basada en nombre y hash con MD5)
  • versión 4 (aleatoria)
  • versión 5 (basada en nombre y hash con SHA1)

https://github.com/search?p=1&q=uuid+php&ref=cmdform&type=Repositories

No sé exactamente qué C # está usando, pero eso es al menos algo que puede usar si está escribiendo algún software y quiere tener identificadores únicos universales.

Mi elección preferida fue https://github.com/fredriklindberg/class.uuid.php porque es solo un archivo PHP simple y el más calificado ( https://github.com/ramsey/uuid ) tenía muchas dependencias en otras bibliotecas, pero la suya puede cambiar pronto (consulte https://github.com/ramsey/uuid/issues/20 ).

Pero si realmente necesita un GUID (de acuerdo con el estándar de Microsoft), tienen un proceso de generación diferente al de estos 4122. Wikipedia afirma que

Los GUID y los UUID RFC 4122 deben ser idénticos cuando se muestran textualmente

http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Binary_encoding

En la mayoría de los casos, debería estar bien si va a una de las librerías de PHP para UUID. No creo que estés entrometido con el Modelo de objetos componentes de Microsoft (COM) , ¿verdad?


<?php function guid(){ if (function_exists(''com_create_guid'') === true) return trim(com_create_guid(), ''{}''); $data = openssl_random_pseudo_bytes(16); $data[6] = chr(ord($data[6]) & 0x0f | 0x40); $data[8] = chr(ord($data[8]) & 0x3f | 0x80); return vsprintf(''%s%s-%s-%s-%s-%s%s%s'', str_split(bin2hex($data), 4)); } ?>

Generador de GUID