优雅的方式将IP转换为八进制

时间:2012-12-04 03:58:38

标签: php

我一直在寻找一种优雅的方式在PHP中将IP地址转换为八进制表示,而无需分别执行四个数字中的每一个。

例如,IP:1.2.3.4将是0001.0002.0003.0004

2 个答案:

答案 0 :(得分:3)

$str_ip = '255.2.3.4';
echo vsprintf("%04o.%04o.%04o.%04o", sscanf($str_ip, "%d.%d.%d.%d"));
//0377.0002.0003.0004

答案 1 :(得分:0)

我不认为你可以避免循环,尽管你可以使用array_walk来避免输入。您可能还希望将$ value转换为字符串并用零填充它。

$ip = '123.12.23.34';
$ip_a = explode('.', $ip);
array_walk($ip_a, function(&$value, $key){ $value = decoct($value); });
echo implode('.',$ip_a);