我的文本文件包含如下格式的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文件中, 请帮忙做到这一点,如果有,请更正错误。
答案 0 :(得分: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 */
?>