2014-04-21 25 views
-3

我正在開發Web應用程序,我需要爲每條記錄生成演示mac地址。將有大量的記錄,我將需要演示mac地址。
在PHP中生成虛擬mac地址的方法

那麼如何使用PHP生成唯一的mac地址呢?

注 -我不想確切的mac地址 - 我需要一些像mac地址但不是UUID的唯一東西。

例如 - 00:17:88:00:00:00

+3

你繼續使用這個詞。我不認爲[MAC地址](http://en.wikipedia.org/wiki/MAC_address)意味着你認爲它的意思是... –

+0

http://www.php.net/manual/en/function.uniqid .php –

+0

@DigitalChris - 問題更新:) –

回答

2
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)); 

https://eval.in/768040

0

mleko

我不知道砍了MD 5字符串會給你一個唯一的ID - 我不知道是否是這種情況,但我會警惕砍32字符MD5字符串下降到12個字符,因爲我認爲你可能會在數字空間碰撞(即重複IDS)!

+1

我很確定你會得到重複。php中的'RAND_MAX'就像32k,所以沒有辦法使用所有可能的組合。這就是爲什麼我提供第二種方法。 – mleko

0

拉吉SF,

你的問題是在這一點曖昧的你不是,如果這唯一的ID是,可能是在不同的行或者其任何行都是唯一的數據或相同的數據獨特的透明爲什麼你真的需要一個格式化爲MAC地址的唯一ID,而不僅僅是一個增加的數字。如果在後端的任何地方都有一個數據庫,我會使用數據庫的唯一鍵字段,然後使用它來生成唯一的ID。

下面是如果你不使用後端數據庫:

例如,如果你遇到的問題可能包含具有相同數據行的表,你就需要添加一個列,它是獨一無二的 - 的最簡單的是某種類型的自動編號(例如,1,2,3,4,5等)。如果你願意,你可以從該自動編號生成一個唯一的ID(例如像mleko給出的答案)。

如果數據本身每行都是唯一的,那麼您可以從連接行值的sha中生成唯一標識(即將行中的所有值連接在一起,然後對該字符串執行sha1(),然後分割你想)。

就我個人而言,我會採用自動編號的方法,因爲您可以確定您將獲得正確的行!

+0

是賈斯汀 - 自動編號的方法也是一種選擇,它看起來不錯;) –