首页 php教程 PHP开发 使用PHP uniqid函数生成唯一ID

使用PHP uniqid函数生成唯一ID

Dec 28, 2016 pm 03:32 PM

生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠。

生成的唯一ID默认返回的字符串有 13 个字符串长,如果不定义唯一ID的前缀,最多可返回23个字符串长,如果再结合md5()函数,生成的唯一ID可靠性将更高,这种生成的ID比随机性的ID 最大优点在于可实现排序,特别是一些需要存储在数据库中的值。

一,函数原型

1

string uniqid ( [string prefix [, bool more_entropy]] )

登录后复制

可定义唯一ID的前缀与长度

二,版本兼容

PHP 3, PHP 4, PHP 5

三,函数基础用法与实例

1,生成一个唯一ID

1

2

3

<?php

echo uniqid();

?>

登录后复制

2,结合md5()函数生成一个唯一ID

1

2

3

<?php

echo md5(uniqid());

?>

登录后复制

输出:dfbc5c8c6438de075da28b3c8a413fd0

3,生成多个唯一ID,由于是以微秒计

1

2

3

4

5

<?php

echo uniqid();

echo uniqid();

echo uniqid();

?>

登录后复制

输出:

4bfd0e375396b
4bfd0e3753981
4bfd0e3753983

由生成的结果来看,唯一ID之间具有可排序性的。
使用uniqid()函数生成唯一ID既能用于生成临时性ID也能用于生成永久性唯一ID(存储数据库)。

ps:php 生成唯一id的几种解决方法

下面小编给大家整理了三种解决办法,具体内容如下:

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

  这种方法有一定的概率会出现重复

2、php内置函数uniqid()

  uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.

  w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

  下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872

1

2

3

4

5

6

7

8

9

10

11

12

13

function uuid() {

  if (function_exists ( &#39;com_create_guid&#39; )) {

    return com_create_guid ();

  } else {

    mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.随便数播种,4.2.0以后不需要了。

    $charid = strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根据当前时间(微秒计)生成唯一id.

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

    $uuid = &#39;&#39; . //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;

  }

}

登录后复制

com_create_guid()是php自带的生成唯一id方法,php5之后貌似已经没有了。

3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

public function create_guid($namespace = &#39;&#39;) {

  static $guid = &#39;&#39;;

  $uid = uniqid("", true);

  $data = $namespace;

  $data .= $_SERVER[&#39;REQUEST_TIME&#39;];

  $data .= $_SERVER[&#39;HTTP_USER_AGENT&#39;];

  $data .= $_SERVER[&#39;LOCAL_ADDR&#39;];

  $data .= $_SERVER[&#39;LOCAL_PORT&#39;];

  $data .= $_SERVER[&#39;REMOTE_ADDR&#39;];

  $data .= $_SERVER[&#39;REMOTE_PORT&#39;];

  $hash = strtoupper(hash(&#39;ripemd128&#39;, $uid . $guid . md5($data)));

  $guid = &#39;{&#39; .

      substr($hash, 0, 8) .

      &#39;-&#39; .

      substr($hash, 8, 4) .

      &#39;-&#39; .

      substr($hash, 12, 4) .

      &#39;-&#39; .

      substr($hash, 16, 4) .

      &#39;-&#39; .

      substr($hash, 20, 12) .

      &#39;}&#39;;

  return $guid;

 }

登录后复制

   

更多使用PHP uniqid函数生成唯一ID相关文章请关注PHP中文网!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)