1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Помогите со скриптом

Тема в разделе 'PHP', создана пользователем Tele2, 8 янв 2012.

Статус темы:
Закрыта.
  1. Скрипт должен выводить массив из айпишников, заданный в $lines
    Что не так?

    Код:
    <?
    function cidrToIps($cidr) {
        list($base, $bits) = explode('/', $cidr);
        list($a, $b, $c, $d) = explode('.', $base);
        $i = ($a << 24) + ($b << 16) + ($c << 8) + $d;
        $mask = $bits == 0 ? 0 : (~0 << (32 - $bits));
        return array_map('long2ip', range($i & $mask, $i | (~$mask & 0xFFFFFFFF)));
    }
     
    function rangeToIps($range) {
        list($ip1, $ip2) = explode("-", $range);
        $ip1int = ip2long($ip1);
        $ip2int = ip2long($ip2);
        return array_map('long2ip', range($ip1int, $ip2int));
    }
     
    $all_ips = array();
     
    function processLine($line) {
        global $all_ips;
        $line = trim($line);
        $ipRex = "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}";
        if (preg_match("#^".$ipRex."/[0-9]{1,2}$#", $line)) {
            $all_ips = array_merge($all_ips, cidrToIps($line));
        } elseif (preg_match("#^".$ipRex."-".$ipRex."$#", $line)) {
            $all_ips = array_merge($all_ips, rangeToIps($line));
        } else {
            $all_ops[] = $line;
        }
    }
     
    $lines = array('192.168.9.0/22', '192.168.8.45', '192.168.10.10-192.168.10.99');
     
    foreach ($lines as $line) {
        processLine($line);
    }
     
    $filtered_ips = array_unique($all_ips);
     
    ?>
  2. Дык нечему выводить то... ни одной функции вывода массива на экран не задано...
  3. задай функцию вывода и посмотри что будет.
    Tele2 нравится это.
  4. в конце
    Код:
    echo $filtered_ips;
    Tele2 нравится это.
  5. результатом будет Array()
    для вывода массивов нужно использовать print_r($filtered_ips);
    Tele2 нравится это.
  6. А для тех кто любит красиво : var_dump($filtered_ips);
  7. о да... шикарно выглядеть будет запись
    вот только на кой нужна лишняя инфа? Если уж нужно красиво, то лучше разобрать массив по элементам с помощью foreach и вывести в каком угодно виде...
  8. array можно вывести ещё так: print_r( $array_value );
    если array всегда из 3-ёх элементов то можно сделать вывод так: $filtered_ips[0] , $filtered_ips[1] , $filtered_ips[2]
    разультат можно помостреть

    проверку элемента можно сделать так
    if( isset($filtered_ips[0]) AND $filtered_ips[0] !== "" ){
    echo $filtered_ips[0];
    } else {
    echo "Пусто";
    }
  9. вот так будет красиво:
    PHP:
     foreach($filtered_ips as $arr)
      {
        echo 
    $arr."<br>";
      } 
  10. :D
    Ага а если поставить XDdebug и сделать var_dump то ваще шикарно будит :D
    Простая распечатка масива а столько флуда вокруг этого что я аж не удержался....
Статус темы:
Закрыта.