Ipv4映射了Ipv6验证

时间:2014-09-08 09:13:32

标签: php ipv6

rfc4291

说,这种类型的Ipv4映射的Ipv6地址的前80位是0。 如何用PHP检查? 我需要更快速,更安全的方法来代替regexp。

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用inet_pton将地址从可打印转换为二进制形式。这将为您提供一个字符串,其中每个章程对应于地址的8位。检查前80位是否为零就像检查返回字符串的前10个字符一样简单:

$addr = '::10.1.2.3';
$bytes = inet_pton($addr);
if (substr($bytes, 0, 10) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") {
  echo "Yes\n";
} else {
  echo "No\n";
}