php GUID生成函数和类
发布:smiling 来源: PHP粉丝网 添加日期:2020-10-20 10:53:32 浏览: 评论:0
这篇文章主要介绍了使用php生成GUID的方法,分别使用了函数和类的方式生成GUID,详细介绍了什么是GUID、GUID的优点等,需要的朋友可以参考下。
一、GUID简介
GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
二、GUID的优点
1.GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
2.世界上的任何两台计算机都不会生成重复的 GUID 值。
3.需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
4.GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
三、GUID生成函数,代码如下:
- function create_guid() {
- $charid = strtoupper(md5(uniqid(mt_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;
- }
三、GUID生成类
PHP获得GUID类:guid_class.php,代码如下:
- <?php
- class System
- {
- function currentTimeMillis()
- {
- list($usec, $sec) = explode(" ",microtime());
- return $sec.substr($usec, 2, 3);
- }
- }
- class NetAddress
- {
- var $Name = 'localhost';
- var $IP = '127.0.0.1';
- function getLocalHost() // static
- {
- $address = new NetAddress();
- $address->Name = $_ENV["COMPUTERNAME"];
- $address->IP = $_SERVER["SERVER_ADDR"];
- return $address;
- }
- function toString()
- {
- return strtolower($this->Name.'/'.$this->IP);
- }
- }
- class Random
- {
- function nextLong()
- {
- $tmp = rand(0,1)?'-':'';
- return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
- }
- }
- // 三段
- // 一段是微秒 一段是地址 一段是随机数
- class Guid
- {
- var $valueBeforeMD5;
- var $valueAfterMD5;
- function Guid()
- {
- $this->getGuid();
- }
- //
- function getGuid()
- {
- $address = NetAddress::getLocalHost();
- $this->valueBeforeMD5 = $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();
- $this->valueAfterMD5 = md5($this->valueBeforeMD5);
- }
- function newGuid()
- {
- $Guid = new Guid();
- return $Guid;
- } //phpfensi.com
- function toString()
- {
- $raw = strtoupper($this->valueAfterMD5);
- return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);
- }
- }
GUID类使用方法:
- require_once("guid.class.php");
- $Guid = new Guid();
- print $Guid->toString();
Tags: GUID生成函数
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)