0

我有文本文件包含这种格式的IP范围::

52.0.0.0-52.1.255.255
52.5.0.0-52.50.255.255

我想从这个范围内逐行生成 IP 列表,我尝试使用此代码来执行此操作,但它不起作用。

<?php

$file = file('ips.txt');
foreach ($file AS $line) {
    $ips = explode('-', $line);
    $range_one = $ips[0];
    $range_two = $ips[1];

    $ip1 = ip2long ($range_one);
    $ip2 = ip2long ($range_two);
    while ($ip1 <= $ip2) {
    print_r (long2ip($ip1) ."". "\n");
    $ip1 ++;

}
}
?>

我想将输出保存在 txt 文件中,如果我有,请帮助执行此操作并纠正错误。

4

1 回答 1

1

添加代码以删除每行中的\r\n\n用于爆炸'-'

并将输出保存到文本文件。

<?php

$file = file('ips.txt');
$data = "";
foreach ($file AS $line) {

    $ip_range = str_replace(array("\r\n","\r"),"",$line); /* remove \r\n or \n before explode '-' */

    $ips = explode('-', $ip_range);
    $range_one = $ips[0];
    $range_two = $ips[1];

    $ip1 = ip2long ($range_one);
    $ip2 = ip2long ($range_two);

    while ($ip1 <= $ip2) {
        $data .= (long2ip($ip1) ."". "\n"); /* save each line to string */
        $ip1 ++;
    }
}

print_r ($data);
file_put_contents("ips_list.txt", $data); /* save output to text file */

?>
于 2018-07-30T03:19:21.430 回答