Обратите внимание, что я сделал это как забавный эксперимент. Ваш вопрос был немного расплывчатым, и вы не пытались сделать это самостоятельно. При этом, эта функция должна выполнять то, что вы хотите. Позвольте мне объяснить, что он делает:
Во-первых, проверяет, является ли последний символ в ip точкой, и удаляет его.
Во-вторых, подсчитайте количество диапазонов, которые имеет ваш IP.
В-третьих, используйте оператор switch/case
(чище, чем if elseif
IMHO), чтобы определить, что делать со строкой, на основе диапазона IP-адресов.
Наконец, определите начальный диапазон и конечный диапазон и объедините их.
Наконец, верните результат.
<?php
$ips = array();
$ips[0] = '125.45.';
$ips[1] = '201.35.1.';
$ips[2] = '101.135.2';
$ips[3] = '222.122';
$ips[4] = '78.56.21.146';
foreach($ips as $ip){
echo "\n\nNEW IP RANGE: " . convert_ip($ip) . "\n\n";
}
function convert_ip($ip){
$ip = rtrim($ip, '.');
$ip_count = count( explode('.', $ip) );
switch ($ip_count) {
case 1:
$starting_ip = $ip . '.0.0.0';
$ending_ip = $ip . '.255.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 2:
$starting_ip = $ip . '.0.0';
$ending_ip = $ip . '.255.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 3:
$starting_ip = $ip . '.0';
$ending_ip = $ip . '.255';
$return_ip = "$starting_ip-$ending_ip";
break;
case 4:
$return_ip = $ip;
break;
default:
$return_ip = 'Unknown';
}
return $return_ip;
}
?>
НОВЫЙ РЯД IP: 125.45.0.0-125.45.255.255
НОВЫЙ РЯД IP: 201.35.1.0-201.35. 1.255
НОВЫЙ IP-ДИАПАЗОН: 101.135.2.0-101.135.2.255
НОВЫЙ IP-ДИАПАЗОН: 222.122.0.0-222.122.255.255
НОВЫЙ IP-ДИАПАЗОН: 78.56.21.146