Извлечение диапазонов CIDR IP из удаленного файла JSON через PHP

В настоящее время я работаю над чем-то, и мне нужно извлечь все диапазоны IP-адресов (перечисленные в формате CIDR) на странице.

Вот пример URL, чтобы проиллюстрировать задачу:

https://stat.ripe.net/data/registry-browser/data.json?include_backward_refs=1&preferred_version=0.3&resource=AS28961&use_live_lookups=1

Я знаю, как открыть файл удаленно и проанализировать JSON, мне просто нужно найти диапазоны IP-адресов в массиве и вывести их в файл.

1 ответ

Грубый и готовый, но, кажется, извлечь желаемый контент - если не сомневаюсь, несколько мелких настроек увидят вас правильно.

    $url='https://stat.ripe.net/data/registry-browser/data.json?include_backward_refs=1&preferred_version=0.3&resource=AS28961&use_live_lookups=1';
    $data=file_get_contents( $url );
    $json=json_decode( $data );

    $backrefs=$json->data->backward_refs;
    foreach( $backrefs as $backref ){
        $fields=$backref->fields;
        printf('<pre>%s</pre>',print_r( $fields[0]->value, true ));
    }

Выход:

193.228.63.0/24
195.39.226.0/23
2001:67c:594::/48

Для вывода в файл

$filename = __DIR__ . '/cidr.txt'; /* change as appropriate */

$url='https://stat.ripe.net/data/registry-browser/data.json?include_backward_refs=1&preferred_version=0.3&resource=AS28961&use_live_lookups=1';
$data=file_get_contents( $url );
$json=json_decode( $data );

$backrefs=$json->data->backward_refs;
foreach( $backrefs as $backref ){
    $fields=$backref->fields;
    file_put_contents( $filename, $fields[0]->value . PHP_EOL, FILE_APPEND );
}
Другие вопросы по тегам