在 PHP 5 中,要将 IP 地址与 CIDR 掩码匹配,可以使用以下方法:
ip2long()
函数将 IP 地址转换为长整型表示。以下是一个示例代码:
function cidr_match($ip, $cidr) {
list($subnet, $mask) = explode('/', $cidr);
$ip_long = ip2long($ip);
$subnet_long = ip2long($subnet);
$mask = ~((1 << (32 - $mask)) - 1);
return ($ip_long & $mask) == ($subnet_long & $mask);
}
$ip = '192.168.1.1';
$cidr = '192.168.0.0/16';
if (cidr_match($ip, $cidr)) {
echo "IP 地址与 CIDR 掩码匹配";
} else {
echo "IP 地址与 CIDR 掩码不匹配";
}
在这个示例中,我们定义了一个名为 cidr_match
的函数,该函数接受 IP 地址和 CIDR 掩码作为参数。我们首先将 IP 地址和子网络地址转换为长整型表示,然后使用位运算符将 IP 地址与 CIDR 掩码进行匹配。如果匹配成功,则返回 true
,否则返回 false
。
在这个示例中,我们使用了 ip2long()
函数将 IP 地址和子网络地址转换为长整型表示。我们还使用了位运算符 ~
和 <<
来计算 CIDR 掩码的反码。最后,我们使用 ==
运算符来比较 IP 地址和子网络地址的掩码部分是否相等。
这个示例中使用的 CIDR 掩码是 192.168.0.0/16
,这意味着它将匹配 192.168.0.0
到 192.168.255.255
范围内的所有 IP 地址。
领取专属 10元无门槛券
手把手带您无忧上云