说,这种类型的Ipv4映射的Ipv6地址的前80位是0。 如何用PHP检查? 我需要更快速,更安全的方法来代替regexp。
答案 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";
}