1

我一直在寻找一种优雅的方式在 php 中将 IP 地址转换为其八进制表示,而不必分别处理四个数字中的每一个。

例如,IP: 1.2.3.4 将是 0001.0002.0003.0004

4

2 回答 2

3
$str_ip = '255.2.3.4';
echo vsprintf("%04o.%04o.%04o.%04o", sscanf($str_ip, "%d.%d.%d.%d"));
//0377.0002.0003.0004
于 2012-12-04T04:21:18.877 回答
0

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

$ip = '123.12.23.34';
$ip_a = explode('.', $ip);
array_walk($ip_a, function(&$value, $key){ $value = decoct($value); });
echo implode('.',$ip_a);
于 2012-12-04T04:18:00.560 回答