在rfc4291 中
即这种类型的Ipv4映射的Ipv6地址的前80个比特是0。如何使用PHP进行检查?我需要更快速、更安全的方法来做到这一点,而不是regexp。
最简单的方法是使用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";
}