我需要将 ipv6 地址转换为其半字节格式以用于动态创建 ptr 记录。以下是我从维基百科得到的信息:
我唯一能找到的关于半字节的东西是在包函数 http://www.php.net/pack 中。我找不到任何带有谷歌搜索问题示例的解决方案。
任何帮助是极大的赞赏。
最佳答案
给定一个合适的现代版本的 PHP(>= 5.1.0,或 Windows 上的 5.3+),使用 inet_pton
函数将 IPv6 地址解析为一个 16 字节的数组,然后使用标准字符串操作来反转它。
$ip = '2001:db8::567:89ab';
$addr = inet_pton($ip);
$unpack = unpack('H*hex', $addr);
$hex = $unpack['hex'];
$arpa = implode('.', array_reverse(str_split($hex))) . '.ip6.arpa';