PHP生成不重复标识符的方法


Posted in PHP onNovember 21, 2014

本文实例讲述了PHP生成不重复标识符的方法。分享给大家供大家参考。具体实现方法如下:

生成唯一不重复的标识我们主要是根据当前的一个时间time然后再转换在md5值,这样几乎是可以保证标签的唯一性,下面整理了一些关于PHP生成不重复标识符程序代码,感兴趣的朋友可以来看一下

PHP倒是自带了生成唯一id的函数:uniqid() ,它是基于当前时间微秒数的,用法如下:

echo uniqid(); //13位的字符串

echo uniqid("php_"); //当然你可以加上前缀

echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串

但是它生成的标识有可能不是唯一的,所以很多人会:
<?php

    //这是第一种简单的方法,当然用sha1()函数也可以。

    echo md5(uniqid());

    //第二种,利用时间戳的方法

    echo md5(time() . mt_rand(1,1000000));

?>

例子:
<?

//生成唯一标识符

//sha1()函数, "安全散列算法(SHA1)"

function create_unique() {

    $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']

     .time() . rand();

    return sha1($data);

    //return md5(time().$data);

    //return $data;

}

?>

例子如下:
<?php

$newhash = create_unique();

echo $newhash; 

?>

我看到很多人使用 md5() 函数,即使它并不完全意味着这个目的:
// generate unique string

echo md5(time() . mt_rand(1,1000000));

There is actually a PHP function named uniqid() that is meant to be used for this.

// generate unique string

echo uniqid();

/* prints

4bd67c947233e

*/

// generate another unique string

echo uniqid();

/* prints

4bd67c9472340

*/

你可能会注意到,尽管字符串是唯一的,前几个字符却是类似的,这是因为生成的字符串与服务器时间相关。

但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。

为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加:

// with prefix

echo uniqid('foo_');

/* prints

foo_4bd67d6cd8b8f

*/

// with more entropy

echo uniqid('',true);

/* prints

4bd67d6cd8b926.12135106

*/

// both

echo uniqid('bar_',true);

/* prints

bar_4bd67da367b650.43684647

*/

这个函数将产生比 md5() 更短的字符串,节省一些空间。

php生成全球唯一标识符(GUID)的方法

GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
世界上的任何两台计算机都不会生成重复的 GUID 值。
需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

<?php

//php生成GUID

function getGuid() {

 $charid = strtoupper(md5(uniqid(mt_rand(), true))); 

 

 $hyphen = chr(45);// "-" 

 $uuid = substr($charid, 0, 8).$hyphen 

 .substr($charid, 8, 4).$hyphen 

 .substr($charid,12, 4).$hyphen 

 .substr($charid,16, 4).$hyphen 

 .substr($charid,20,12);

 return $uuid; 

}

?>

希望本文所述对大家的php程序设计有所帮助。
PHP 相关文章推荐
php中strtotime函数用法详解
Nov 15 PHP
php实现从上传文件创建缩略图的方法
Apr 02 PHP
php实现微信公众号无限群发
Oct 11 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
php的debug相关函数用法示例
Jul 11 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
PHP实现的回溯算法示例
Aug 15 PHP
php中各种定义变量的方法小结
Oct 18 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
laravel批量生成假数据的方法
Oct 09 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
php中HTTP_REFERER函数用法实例
Nov 21 #PHP
php中call_user_func函数使用注意事项
Nov 21 #PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 #PHP
php常用数学函数汇总
Nov 21 #PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 #PHP
php防止恶意刷新与刷票的方法
Nov 21 #PHP
php采用curl实现伪造IP来源的方法
Nov 21 #PHP
You might like
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
让python json encode datetime类型
2010/12/28 Python
Python3基础之基本数据类型概述
2014/08/13 Python
Cpy和Python的效率对比
2015/03/20 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python执行精确的小数计算方法
2019/01/21 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
基于python实现地址和经纬度转换
2020/05/19 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
六十岁生日答谢词
2014/01/10 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
3分钟演讲稿
2014/04/30 职场文书
会计专业自荐信
2014/06/03 职场文书
家具商场的活动方案
2014/08/16 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
2016年会开场白台词
2015/06/01 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书