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”因为我读到 here 这是一个很好的方法)

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

您可以通过以下方式快速将字符串获取到数组:

$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