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


PHP: Turn known MAC into different format (fast way?)

我必须通过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",因为我在这里读到这是一个很好的方法)

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

您可以使用快速将字符串获取到数组中

$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

这应该适用于您:

(这里我只使用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