PHP:将已知的MAC转换为不同的格式(快速方式?)

时间:2015-02-18 14:31:56

标签: php string loops mac-address

我必须通过PHP转换许多已知的MAC字符串(总是12个字符),以便在票证内容中循环和查找(如果它们以三种形式中的任何一种存在)。

他们来自我们的数据库:A0B0C0D0E0F0(总是12个字符)。

我需要一些代码将它们变成A0:B0:C0:D0:E0:F0然后是A0-B0-C0-D0-E0-F0。

代码会像

那样
while ($row = mysqli_fetch_object($resultmac) {

    if (strpos($ticket, $row->mac) !== false || strpos($ticket, //mac with ":"//) !== false || strpos($ticket, //mac with "-"//) !== false) {
        echo "found match : ";
    }

}

(我使用“!== false”因为我读here这是一个很好的方法)

有没有更好的方法将字符串转换为数组并在每组两个字符后手动添加“:”或“ - ”?

2 个答案:

答案 0 :(得分:2)

您可以使用以下命令快速将字符串转换为数组:

$mac = 'A0B0C0D0E0F0';
$bytes = str_split($mac, 2);

数组$ bytes现在有每个十六进制数。然后你可以:

$colons = implode(':', $bytes); // A0:B0:C0:D0:E0:F0
$dashes = implode('-', $bytes); // A0-B0-C0-D0-E0-F0

答案 1 :(得分:2)

这应该适合你:

(这里我只使用wordwrap()

<?php

    $str = "A0B0C0D0E0F0";

    echo wordwrap($str, 2, ":", TRUE);
    echo wordwrap($str, 2, "-", TRUE);

?>

输出:

A0:B0:C0:D0:E0:F0
A0-B0-C0-D0-E0-F0