Php 拆分IP地址范围,IP地址在210937记录后停止

Php 拆分IP地址范围,IP地址在210937记录后停止,php,ip,Php,Ip,我有一个IP范围的数据库,我正在使用下面的代码将范围拆分为各个IP地址。在我找到210937条记录之前,这一切都很正常,然后代码停止对IP范围进行spiliting,并开始插入0.0.0.0 我已经尝试删除一些IP地址,但它仍然在同一点停止,即使IP地址不同 for ($ip = ip2long($ip1); $ip<=ip2long($ip2); $ip++) { $lip = long2ip($ip); 看起来您处理的是单个IP地址,而不是一个范围;可以通过以下方式处理这两个问

我有一个IP范围的数据库,我正在使用下面的代码将范围拆分为各个IP地址。在我找到210937条记录之前,这一切都很正常,然后代码停止对IP范围进行spiliting,并开始插入0.0.0.0

我已经尝试删除一些IP地址,但它仍然在同一点停止,即使IP地址不同

 for ($ip = ip2long($ip1); $ip<=ip2long($ip2); $ip++)
 {
 $lip = long2ip($ip);

看起来您处理的是单个IP地址,而不是一个范围;可以通过以下方式处理这两个问题:

if ($row['ip_start_range'] == '' || $row['ip_end_range'] == '') {
    $ip1 = $ip2 = $row['ip_address'];
} else {
    $ip1 = $row['ip_start_range'];
    $ip2 = $row['ip_end_range'];
}
此外,您还可以通过将
ip2long
调用移出循环来提高效率:

$start = ip2long($ip1);
$stop = ip2long($ip2);

for ($ip = $start; $ip <= $stop; $ip++) {
  // ...
}
$start=ip2long($ip1);
$stop=ip2长($ip2);

对于($ip=$start;$ip@Class,如果是这样的话,它不会在之后插入任何内容。您好,我从表的开始和结束处获取ip地址,每个都包含一个ip地址,代码如下。$ipe=$row['ip\U end\U range'];$ips=$row['ip\U start\U range'];$ip1=“$ips”$ip2=“$ipe”;是的,在它停止插入后,它会继续插入数千条记录,但只是插入0.0.0.0我想你需要发布更多代码。我也想看到更多代码。首先,我会在循环之外使用你的ip2long函数。
if ($row['ip_start_range'] == '' || $row['ip_end_range'] == '') {
    $ip1 = $ip2 = $row['ip_address'];
} else {
    $ip1 = $row['ip_start_range'];
    $ip2 = $row['ip_end_range'];
}
$start = ip2long($ip1);
$stop = ip2long($ip2);

for ($ip = $start; $ip <= $stop; $ip++) {
  // ...
}