检查ip是否在白名单/黑名单内
如果名单内都是固定的ip,直接in_array就行了,如果是包含*的,可以使用正则,但是数据量大的时候正则效率堪忧
//要检查的ip
$ip = 192.168.43.18;
//ip名单
$ip_list = [117.20.43.58, 117.*.43.58, 117.20.*.*, 198.32.43.*, 34.88.201.205, 192.168.*.18, 158.20.11.22, 217.20.45.66];
public function checkip($ip, $ip_list)
{
//检查ip
if (in_array($ip, $ip_list)) {
return 存在 ;
}
//检查包含*的情况
$ips = explode(., $ip);
foreach ($ip_list as $row) {
if (strpos($row, *) === false) {
continue;
}
$rows = explode(., $row);
foreach ($ips as $key => $val) {
if ($rows[$key] != * && $rows[$key] != $val) {
continue 2;
}
if ($key == 3) {
return 存在;
}
}
}
return 不存在;
} 如果名单内都是固定的ip,直接in_array就行了,如果是包含*的,可以使用正则,但是数据量大的时候正则效率堪忧 //要检查的ip $ip = 192.168.43.18; //ip名单 $ip_list = [117.20.43.58, 117.*.43.58, 117.20.*.*, 198.32.43.*, 34.88.201.205, 192.168.*.18, 158.20.11.22, 217.20.45.66]; public function checkip($ip, $ip_list) { //检查ip if (in_array($ip, $ip_list)) { return 存在 ; } //检查包含*的情况 $ips = explode(., $ip); foreach ($ip_list as $row) { if (strpos($row, *) === false) { continue; } $rows = explode(., $row); foreach ($ips as $key => $val) { if ($rows[$key] != * && $rows[$key] != $val) { continue 2; } if ($key == 3) { return 存在; } } } return 不存在; }
