IP地址分为公网IP和私网IP(内网IP)。公网IP是全球唯一的,可以在互联网上直接访问。私网IP是为组织内部网络分配的,不能直接在互联网上访问,但可以在内部网络中使用。
根据RFC 1918标准,私网IP地址范围如下:
内网IP广泛应用于企业内部网络、家庭网络、数据中心等场景,用于内部设备之间的通信和管理。
<?php
function isPrivateIP($ip) {
$privateIPs = [
"/^10\./",
"/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\./",
"/^192\.168\./"
];
foreach ($privateIPs as $pattern) {
if (preg_match($pattern, $ip)) {
return true;
}
}
return false;
}
$ip = "192.168.1.1";
if (isPrivateIP($ip)) {
echo "$ip 是内网IP";
} else {
echo "$ip 不是内网IP";
}
?>原因:可能是由于IP地址格式不正确,或者IP地址不在RFC 1918定义的私网IP范围内。
解决方法:
192.168.1.1。解决方法:可以扩展上述函数以支持IPv6地址的判断。RFC 4193定义了唯一的本地地址(ULA),类似于IPv4的私网IP地址。
function isPrivateIPv6($ip) {
$privateIPv6s = [
"/^fd[0-9a-fA-F:]+/",
"/^fe80:[0-9a-fA-F:]+/"
];
foreach ($privateIPv6s as $pattern) {
if (preg_match($pattern, $ip)) {
return true;
}
}
return false;
}通过上述方法,可以有效地判断IP地址是否为内网IP,并处理常见的相关问题。
没有搜到相关的文章