PHP中生成UUID自定义函数分享


Posted in PHP onJune 10, 2015

UUID 全称是 Universally unique identifier,它是一种识别符,使用任意的计算机都可以生成,不需要一个中央数据库进行管理,即可以保证几乎没有重复的几率。而 UUID 的值域之大,据说给世界上每一粒沙子分配一个 UUID,也不会有重复的。

最近在改 WordPress 的代码,需要用到 UUID。但是,PHP 中居然没有生成 UUID 的函数,只好自己写一个。

if (!function_exists('com_create_guid')) {
 function com_create_guid() {
  return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
    mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
    mt_rand( 0, 0xffff ),
    mt_rand( 0, 0x0fff ) | 0x4000,
    mt_rand( 0, 0x3fff ) | 0x8000,
    mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
  );
 }
}

上述代码可以生成一个 UUID version 4。UUID 目前有 5 个版本,其中第四版是完全随机的,生成起来比较容易。而其中的 com_create_guid,是 Windows 中 PHP 的一个函数,它直接调用 COM 的 CreateGuid 函数来生成 UUID,但是在 Linux 没有对应的函数库,只好自己写了。为了方便在不同的平台上使用,就创建了一个同名的函数。其它的代码就是生成随机数了。

至于用法,就直接调用 com_create_guid() 即可。

PHP 相关文章推荐
PHP+DBM的同学录程序(4)
Oct 09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
PHP array 的加法操作代码
Jul 24 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
浅析iis7.5安装配置php环境
May 10 PHP
php根据生日计算年龄的方法
Jul 13 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 PHP
php使用for语句输出三角形的方法
Jun 09 #PHP
php生成图片验证码
Jun 09 #PHP
php判断用户是否手机访问代码
Jun 08 #PHP
浅谈PHP中Stream(流)
Jun 08 #PHP
php实现有趣的人品测试程序实例
Jun 08 #PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 #PHP
php查询whois信息的方法
Jun 08 #PHP
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
简单的php 验证图片生成函数
2009/05/21 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python生成器generator用法示例
2018/08/10 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python map及filter函数使用方法解析
2020/08/06 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
python 递归相关知识总结
2021/03/03 Python
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
医学生就业推荐表自我鉴定
2014/03/26 职场文书
体育教师求职信
2014/05/24 职场文书
企业理念标语
2014/06/09 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
python pygame入门教程
2021/06/01 Python