【问题标题】:Generate IP list from text file从文本文件生成 IP 列表
【发布时间】:2018-07-30 01:20:33
【问题描述】:

我的文本文件包含这种格式的 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 文件中, 如果我有请帮助这样做并纠正错误。

【问题讨论】:

  • 你得到一个错误?发生什么了?也许将print_r 替换为$str .= 然后将其写入文件?
  • foreach 循环 中的代码很好。您是否忘记删除 $line 中的“\n”

标签: php list ip generate


【解决方案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-08-19
  • 2021-02-21
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多