Генерация ip по списку диапазонов

Статус
В этой теме нельзя размещать новые ответы.

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
подскажите пожалуйста, как сгенерить диапазон всех ip адресов например с 202.70.112.0 по 202.70.127.255 ? По сути, надо в цикле сравнить последние цифры в ip адресе и увеличивать на единицу если они разные и выводить пока 255 не будет. Потом сравнивать предпоследние цифры, и увеличивать на единицу, а последние увеличивать на единицу 255 раз и так далее. А как это сделать :nezn:

получается только с последними цифрами


PHP:
<?php
 
if(isset($_POST['ip_stran']))
 
{
 
switch ($_POST['ip_stran'])
 
{
 
case "amirikan-samoa":
$_file = "http://www.proxysecurity.com/ip-address-range.php?country=AMERICAN+SAMOA";
break;
 
}
 
echo "страница с диапазоном - <a href='$_file' target='blank'>$_file</a><br><br>";
 
$stringg = $_file;
$stringg = iconv ("CP1251", "UTF-8", $stringg);
//$stringg = explode(" &#8211; ", $stringg);
$stringg = explode("</td>", $stringg);
 
foreach ($stringg as $urlded) {
 
$string = file_get_contents($urlded);
//preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/s", $string, $found);
$massiv = preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}) &#8211; ([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/s", $string, $found);
$total = sizeof($found[1]);
for($i=0; $i<$total; $i++) {
//$ip = $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i];
$ip = $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i].' - '.$found[5][$i].'.'.$found[6][$i].'.'.$found[7][$i].'.'.$found[8][$i];
 
$_ip1 = $found[1][$i];
$_ip2 = $found[2][$i];
$_ip3 = $found[3][$i];
$_ip4 = $found[4][$i];
$_ip5 = $found[5][$i];
$_ip6 = $found[6][$i];
$_ip7 = $found[7][$i];
$_ip8 = $found[8][$i];
 
echo "диопазон ip - $ip. <br><br>";
 
for ($_ip4==$_ip8; $_ip4<=$_ip8; $_ip4++)
echo "$_ip1.$_ip2.$_ip3.$_ip4<br>";
echo '<br>';
 
}
}
 
echo '<br>всего диапазонов - ';
print_r($massiv);
 
}
 
else
 
{
 
echo"
 
<form name='form' method='post' action=''>
 
<p>ip страны</p>
<p>
<select name='ip_stran' size=1>
<option value=amirikan-samoa>Американ Самоа</option>
</select>
</p>
 
<p></p>
<input type='submit' value='Заебенить'>
 
</form>
 
";
 
}
 
?>
 
какие-то хардкоровские решения по ссылке, вот простой примерчик:
PHP:
$ip_from= "202.70.112.0";
$ip_to= "202.70.115.255";
 
$ip_to= explode (".", $ip_to);
 
$ip_from= explode (".", $ip_from);
$ip_from= array_reverse ($ip_from);
 
while (true) {
    foreach ($ip_from as $key => $value) {
        if ($value+1 > 255) {
            $ip_from[$key] = 0;
            continue;
        }
        $ip_from[$key]++;
        break;
    }
    $ip_real = array_reverse ($ip_from);
 
    print_r(implode(".", $ip_real));
 
   $stop = true;
   foreach ($ip_real as $key => $value) {
       if ($value < $ip_to[$key]) {
           $stop = false;
       }
   }
 
   if ($stop) {
       break;
   }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху