<?php
file_put_contents('output', join(PHP_EOL, array_map(function ($sInput) {
list($ip, $mask) = explode('/', trim($sInput));
return substr(str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT), 0, $mask);
}, file('input', FILE_SKIP_EMPTY_LINES))));
?>
$inputArr = file('input', FILE_SKIP_EMPTY_LINES); // читаем из файла все данные
$outputArr = []; // пустой выходной массив
foreach ($inputArr as $line) { // читаем построчно входные данные
list($ip, $mask) = explode('/', trim($line)); // разбиваем строку на $ip и $mask, по разделителю '/'
$ipAsLongInt = ip2long($ip); // Преобразуем ip адрес в десятичное число
$ipAsBinary = decbin($ipAsLongInt); // Преобразуем число в бинарное число
$ipAsBinaryWithCorrectLength = str_pad($ipAsBinary, 32, 0, STR_PAD_LEFT); // дополняем слева нулями до длинны 32 символа
$outputLine = substr($ipAsBinaryWithCorrectLength, 0, $mask); // Копируем из строки только первые $mask символов
$outputArr[] = $outputLine;
}
$outputRaw = join(PHP_EOL, $outputArr); // Соединяем все строки из массива символом перевода строки
file_put_contents('output', $outputRaw); // Записываем данные в выходной файл
$input_lines = file('input.txt', FILE_SKIP_EMPTY_LINES);
$output_lines = [];
foreach ($input_lines as $line) {
$line = trim($line);
list($ip, $mask) = explode('/', $line);
$ip_as_long = ip2long($ip);
$ip_as_bin = decbin($ip_as_long);
$padded_bin = str_pad($ip_as_long, 32, 0, STR_PAD_LEFT);
$output_lines[] = substr($padded_bin, 0, $mask);
}
$out = join(PHP_EOL, $output_lines);
file_put_contents('output.txt', $out);
<?php
file_put_contents(
'output',
join(
PHP_EOL,
array_map(
function ($sInput) {
list($ip, $mask) = explode('/', trim($sInput));
return substr(str_pad(decbin(ip2long($ip)), 32, 0, STR_PAD_LEFT), 0, $mask);
},
file('input', FILE_SKIP_EMPTY_LINES))
)
);
?>