Мне нужно преобразовать много, много известных строк 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 : ";
}
}
(Я использую «! == ложь», потому что я читаю Вот что это был хороший способ сделать это)
Есть ли лучший способ, чем преобразовать строку в массив и вручную добавить «:» или «-» после каждого набора из двух символов?
Вы можете быстро получить строку в массив с помощью:
$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