我正在开发Web应用程序,我需要为每条记录生成演示mac地址。将有大量记录,我将需要演示mac地址。
那么如何使用PHP生成唯一的mac地址?
注意 - 我不想要确切的mac地址 - 我需要像mac地址这样的独特内容但不需要UUID。
例如 - 00:17:88:00:00:00
答案 0 :(得分:4)
echo implode(':', str_split(substr(md5(mt_rand()), 0, 12), 2));
https://eval.in/768041 或没有哈希
echo implode(':', str_split(str_pad(base_convert(mt_rand(0, 0xffffff), 10, 16) . base_convert(mt_rand(0, 0xffffff), 10, 16), 12), 2));
答案 1 :(得分:1)
Raj Sf,
您的问题有点含糊不清,因为您不清楚这个唯一ID是否对于在不同行中可能相同的数据是唯一的,或者是否为任何行的唯一数据或为什么您确实需要格式化的唯一ID像一个MAC地址,而不是一个增量的数字。如果后端的任何地方都有数据库,我将使用数据库的唯一键字段,然后使用它来生成唯一ID。
如果您不使用后端数据库,则以下内容适用:
例如,如果您的表可能包含具有相同数据的行,则需要添加一个唯一的列 - 最简单的是某种类型的自动编号(例如,1,2,3,4,5)等等)。然后,如果您愿意,可以从该自动编号生成唯一ID(例如,像mleko给出的答案)。
如果数据本身每行是唯一的,你可以从连接行值的sha生成唯一id(即将行中的所有值连接在一起,然后对字符串执行sha1()并分割,但是你“我愿意。”
就个人而言,我会采用自动编号的方法,因为你可以确定你会得到正确的排回来!
答案 2 :(得分:1)
你可以尝试不同的密码生成方法来生成0-F字符的(伪)随机字符串:
How to generate random password with PHP? 然后将其切片为mleko建议。
答案 3 :(得分:0)
我不确定砍掉一个md5字符串会给你一个唯一的id - 我不知道是不是这样但是我要警惕将32个字符的md5字符串砍成12个字符作为我想你可能会在数字空间中发生碰撞(即重复的ids)!