我正在工作的网络应用程序,我将需要为每个记录生成演示mac地址。将有大量的记录,我将需要演示mac地址。那么如何使用PHP生成唯一的mac地址呢?
**注意-**我不需要确切的mac地址-我需要一些唯一的东西,如mac地址,但不是UUID。
例如-00:17:88:00:00:00
00:17:88:00:00:00
dhxwm5r41#
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, '0'), 2));
https://eval.in/768040
qhhrdooz2#
使用faker时:
use Faker; $faker = new Faker\Generator(); $faker->addProvider(new Faker\Provider\Internet($faker)); $mac = $faker->macAddress();
ej83mcc03#
拉吉·塞夫,您的问题有点模糊,因为您不清楚这个唯一ID对于不同行中可能相同的数据是否是唯一的,或者它的数据对于任何行是否都是唯一的,或者为什么您真的需要一个像MAC地址一样格式的唯一ID,而不是一个递增的数字。我会使用数据库的唯一关键字字段,然后用它来生成唯一ID。如果您不使用后端数据库,则以下内容适用:例如,如果您有一个表,其中可能包含具有相同数据的行,则需要添加一个唯一的列-最简单的是某种类型的自动编号(例如,1、2、3、4、5等)。然后,如果您愿意,可以从该自动编号生成一个唯一的ID(例如,像mleko给出的答案)。如果数据本身对于每一行都是唯一的,则可以从连接行值的sha中生成唯一id(即将行中的所有值连接在一起,然后对字符串执行sha1(),并根据需要进行拆分)。就个人而言,我会去与自动编号的方法,因为你可以肯定你会得到正确的行回来!
rslzwgfq4#
您可以尝试不同的密码生成方法来生成0-F字符的(伪)随机字符串:How to generate random password with PHP?,然后按照mleko的建议对其进行切片。您也可以 checkout 此项目:https://github.com/BlakeGardner/php-mac-address
7qhs6swi5#
5条答案
按热度按时间dhxwm5r41#
https://eval.in/768041或不带哈希
https://eval.in/768040
qhhrdooz2#
使用faker时:
ej83mcc03#
拉吉·塞夫,
您的问题有点模糊,因为您不清楚这个唯一ID对于不同行中可能相同的数据是否是唯一的,或者它的数据对于任何行是否都是唯一的,或者为什么您真的需要一个像MAC地址一样格式的唯一ID,而不是一个递增的数字。我会使用数据库的唯一关键字字段,然后用它来生成唯一ID。
如果您不使用后端数据库,则以下内容适用:
例如,如果您有一个表,其中可能包含具有相同数据的行,则需要添加一个唯一的列-最简单的是某种类型的自动编号(例如,1、2、3、4、5等)。然后,如果您愿意,可以从该自动编号生成一个唯一的ID(例如,像mleko给出的答案)。
如果数据本身对于每一行都是唯一的,则可以从连接行值的sha中生成唯一id(即将行中的所有值连接在一起,然后对字符串执行sha1(),并根据需要进行拆分)。
就个人而言,我会去与自动编号的方法,因为你可以肯定你会得到正确的行回来!
rslzwgfq4#
您可以尝试不同的密码生成方法来生成0-F字符的(伪)随机字符串:
How to generate random password with PHP?,然后按照mleko的建议对其进行切片。
您也可以 checkout 此项目:https://github.com/BlakeGardner/php-mac-address
7qhs6swi5#
2.不允许使用广播MAC地址FF:FF:FF:FF:FF:FF。
3.不允许使用多点传送MAC位址(二进制中每个第一个字节的第一个比特)XXXXXXX 1:XX:XX:XX:XX:XX。
4.手动生成的mac地址必须在第一个字节的第二位包含1(每个第一个字节的第一位为0 -非组播,每个第一个字节的第二位为1 -非自动生成,非制造商生成)XXXXXX 10:XX:XX:XX:XX:XX。
这样,您手动生成的mac地址必须从02+:00:00:00:00:00到02+:FF:FF:FF:FF。
手动生成的正确MAC地址,算法速度提高7%:
2).如果你有一个新的字符串,那么你就可以用它来表示一个新的字符串。