php中guid怎么使用,关于php:如何生成新的GUID?

我正在开发一个Web服务,它需要一个新的GUID()作为对服务内方法的引用传递。

我不熟悉C#或GUID() object,但需要类似于PHP的东西(因此创建一个新的对象,根据我的理解返回empty/blank GUID)。

有什么主意吗?

net /手动/恩/ function.uniqid.php

(注:a uuidv4哪里guid.newguid在。NET)。

"yunowork通常更好的非定域的链接参考。

不好啊……我只是googled和copied自动链接,但我得到的英文页面,SRY基因。

检查stackoverflow.com /问题/ 2040240 / & hellip;

从我的理解新的GUID(C)在#会返回对象是一个空白的归来》(与- 0000 0000 000000000000 GUID从构造函数)。我从来没有#湖泊类对象C / I don’t知道什么是"程序"replicate"A similiar类有相同的属性和方法,是从什么,我可以看到Web服务的需要。因此我需要得到一个PHP的等效# GUID(C)的新方法是把认识到创建它。希望它的理解?

不要把车轮,只是github.com Ramsey / /使用UUID。

您可以尝试以下操作:

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

}

资料来源:com_create_guid。

仅适用于基于Windows的平台!

@穆罕默德纳德里为什么?function_exists检查的目的是,如果com_create_guid可用(即在Windows上),代码将使用该检查,但如果不可用,则在非Windows系统上返回到下面的sprintf检查,该检查仍然可以正常工作。

据我所知,mt_rand()不承诺唯一值,因此在非基于Windows的系统上,这可能会生成一个guid格式的字符串,但不承诺全局唯一。

@Muhammadnaderi只要实现与come_create_guid()函数使用的相同底层算法,就足够了。你最好用mt_srand()而不是rand()。但是打电话给mt_srand()可能会有所帮助。

作为上述选项的替代方案:

$guid = bin2hex(openssl_random_pseudo_bytes(16));

它给出一个类似于412ab7489d8b332b17a2ae127058f4eb的字符串。

pHP7用bin2hex(random_bytes(16))。+

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

}

?>

GUID发生器

根据guid和uuid之间的区别?

GUID is Microsoft's implementation of the UUID standard.

因此,这里有一个到库的链接,让您创建以下类型的UUID:

版本1(基于时间)

版本3(基于名称并使用MD5散列)

版本4(随机)

版本5(基于名称并用sha1散列)

https://github.com/search?p=1&q=uuid+php&ref=CmdForm&type=存储库

我不太清楚,哪一个C正在使用,但如果你在写一些软件,并且想要有通用的唯一标识符,那至少是你可以使用的。

我的最佳选择是https://github.com/fredriklindberg/class.uuid.php,因为它只是一个简单的php文件,最受欢迎的文件(https://github.com/ramsey/uuid)对其他库有很大的依赖性,但它可能很快就会改变(参见https://github.com/ramsey/uuid/issues/20)。

但是如果你真的需要一个guid(根据微软的标准),他们有一个不同于4122的生成过程。维基百科声称

GUIDs and RFC 4122 UUIDs should be identical when displayed textually

http://en.wikipedia.org/wiki/globally_unique_identifier binary_编码

在大多数情况下,您应该选择一个用于UUID的php libs。我不认为你在干预微软组件对象模型(COM),是吗?

嗨,西蒙,谢谢你的回答。我可以确认SOAP方法调用需要从ASP引用一个新的guid()。然后,服务将验证凭据,然后创建一个新的guid(我认为该方法在guid()对象中称为new_guid(),然后在两端捕获该对象。有了这句话,我不知道如何处理这个问题(我可能是错的),即使我重新创建guid()对象并将其作为引用(可能通过toString)发送,他们的服务也无法使用php对象(他们使用SharePoint)。有什么主意吗?

请解释一下为什么这次投票被否决。下次我想做得更好!

对于像我这样的谷歌用户,我发现这个剪子更准确:

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;

}

}

来源:http://guid.us/guid/php

不是唯一的!用这个来代替:$charid = strtoupper(bin2hex(openssl_random_pseudo_bytes(16)));。

返回vsprintf("%s%s-%s-%s-%s-%s%s%s",str_split($charid,4));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值