首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换MAC地址格式

转换MAC地址格式
EN

Stack Overflow用户
提问于 2014-10-03 10:35:12
回答 5查看 7.3K关注 0票数 3

我只是编写了一个小脚本,从交换机中提取数百个MAC地址进行比较,但是它们被格式化为"0025.9073.3014“,而不是标准的"00:25:90:73:30:14”。

我很难理解如何转换这个,我能想出的最好的方法就是在".“中把它们炸成碎片,然后把它们进一步分解成两块,然后用":”分隔器重新连接所有的部件。

我不介意使用讨厌的方法,但这让我很困扰,因为这是一个非常糟糕的方法。有什么办法能做得更好吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-10-03 10:44:42

str_replacepreg_replace的结合

代码语言:javascript
复制
$str = preg_replace('~..(?!$)~', '\0:', str_replace(".", "", $str));

首先去掉.,然后在..之后添加:,如果没有,则在..后面添加两个字符(?!$)

eval.in测试

或者使用俘获群并在没有str_replace的情况下执行:

代码语言:javascript
复制
$str = preg_replace('~(..)(?!$)\.?~', '\1:', $str);

在regex101.com进行测试

在表现上没有太大的差别。

票数 4
EN

Stack Overflow用户

发布于 2014-10-03 10:48:16

如果您不喜欢正则表达式,那么下面是另一种方法,如果您是PHP新手,这是可以理解的。基本上,它只是移除点,然后每隔2个字符将字符串拆分成数组,然后用冒号将它们内爆:

代码语言:javascript
复制
$string = "0025.9073.3014";
$result = implode(":", str_split(str_replace(".", "", $string), 2));
echo $result;

产出:

00:25:90:73:30:14

票数 3
EN

Stack Overflow用户

发布于 2014-10-03 10:41:10

preg_replace捕获组、反向引用的结合

代码语言:javascript
复制
$mac = "0025.9073.3014";
$mac = preg_replace('/(..)(..)\.(..)(..)\.(..)(..)/',
                    '$1:$2:$3:$4:$5:$6', $mac);
echo($mac);
// => 00:25:90:73:30:14
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26177399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档