строка — PHP: превратить известный MAC в другой формат (быстрый способ?)

Мне нужно преобразовать много, много известных строк MAC (всегда 12 символов) через PHP, чтобы зациклить и найти содержимое билетов, если они существуют в любой из трех форм.

Они приходят в этом формате из нашей базы данных: 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 : ";
}

}

(Я использую «! == ложь», потому что я читаю Вот что это был хороший способ сделать это)

Есть ли лучший способ, чем преобразовать строку в массив и вручную добавить «:» или «-» после каждого набора из двух символов?

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

По вопросам рекламы [email protected]