За последние 24 часа нас посетили 15553 программиста и 1617 роботов. Сейчас ищут 773 программиста ...

многа циферок в файле

Тема в разделе "Регулярные выражения", создана пользователем Casper, 20 окт 2009.

  1. Casper

    Casper Активный пользователь

    С нами с:
    20 окт 2009
    Сообщения:
    3
    Симпатии:
    0
    Помогите разобраться. Если тема не там создана прошу прощения. В форуме ничё подходящего нет ... или просто я не вижу.
    Суть:
    файл содержания:
    192.168.5.25 22222 0
    192.168.1.25 26300 0
    192.168.5.22 32250 1
    192.168.1.25 22222 0
    192.168.1.25 22500 1
    192.168.1.25 22502 1
    192.168.1.25 28902 1
    192.168.1.46 23321 1
    192.168.1.25 28222 1
    192.168.5.22 32250 1
    192.168.5.22 39950 1
    192.168.1.46 25555 0


    нужно найти по определённому ip и индексу(0 или 1) данные.
    Пример есть ip:192.168.1.25 и нужны данные по индексу 1, и он должен например вывести: 22500 и записать её в переменную.
    Вот что я делаю:

    <?php
    $arr_file=fopen("/var/www/папка/trafic/traffic.txt", "r");
    $ipaddr="192.168.1.25";
    if (file_exists($arr_file)) {echo "файл не доступен";} else {
    foreach($arr_file as $iteam_in) {
    if (eregi($ipaddr,$iteam_in)) {
    $parts=explode(" ",$iteam_in);
    $bal="$parts[1] $parts[2]\n\n";
    preg_match_all("/.+1/",$bal,$resIP_in);
    for ($i=0; $i< count($resIP_in[0]); $i++) {
    $IP_in=$resIP_in[0][$i];
    }
    $$byte_in=explode(" ",$IP_in);
    echo "$byte_in[0]<br><br>";
    } //if
    } // foreach itaem

    foreach($arr_file as $iteam_out) {
    if (eregi($ipaddr,$iteam_out)) {
    $parts_out=explode(" ",$iteam_out);
    $bal_out="$parts_out[1] $parts_out[2]\n\n";
    preg_match_all("/.+0/",$bal_out,$resIP_out);
    for ($j=0; $j< count($resIP_out[0]); $j++) {
    $IP_out=$resIP_out[0][$j];
    }
    $$byte_out=explode(" ",$IP_out);
    // echo "$byte_out[0]<br><br>";
    } //if
    } // foreach itaem
    } // else
    ?>


    но с этим как то не работает ... точнее не видет он этого значения.
    Помогите плз. разобраться :oops:
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Оформи код
     
  3. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2. $arr_file=fopen("/var/www/папка/trafic/traffic.txt", "r");
    3. $ipaddr="192.168.1.25";
    4. if (file_exists($arr_file)) {echo "файл не доступен";} else {
    5. foreach($arr_file as $iteam_in) {
    6. if (eregi($ipaddr,$iteam_in)) {
    7. $parts=explode(" ",$iteam_in);
    8. $bal="$parts[1] $parts[2]\n\n";
    9. preg_match_all("/.+1/",$bal,$resIP_in);
    10. for ($i=0; $i< count($resIP_in[0]); $i++) {
    11. $IP_in=$resIP_in[0][$i];
    12. }
    это бессмысленный набор буковок и циферок, который в принципе работать не будет
     
  4. Casper

    Casper Активный пользователь

    С нами с:
    20 окт 2009
    Сообщения:
    3
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3.    $arr_file=fopen("/var/www/папка/trafic/traffic.txt", "r");
    4.    $ipaddr="192.168.1.25";
    5.       if (file_exists($arr_file)) {echo "файл не доступен";} else {
    6.          foreach($arr_file as $iteam_in) {
    7.             if (eregi($ipaddr,$iteam_in)) {
    8.             $parts=explode(" ",$iteam_in);
    9.             $bal="$parts[1] $parts[2]\n\n";
    10.             preg_match_all("/.+1/",$bal,$resIP_in);
    11.          for ($i=0; $i< count($resIP_in[0]); $i++) {
    12.       $IP_in=$resIP_in[0][$i];
    13.    }
    14.          $$byte_in=explode(" ",$IP_in);
    15.          echo "$byte_in[0]<br><br>";
    16.       } //if
    17.    } // foreach itaem
    18.  
    19.    foreach($arr_file as $iteam_out) {
    20.       if (eregi($ipaddr,$iteam_out)) {
    21.          $parts_out=explode(" ",$iteam_out);
    22.          $bal_out="$parts_out[1] $parts_out[2]\n\n";
    23.          preg_match_all("/.+0/",$bal_out,$resIP_out);
    24.       for ($j=0; $j< count($resIP_out[0]); $j++) {
    25.             $IP_out=$resIP_out[0][$j];
    26.          }
    27.       $$byte_out=explode(" ",$IP_out);
    28.    // echo "$byte_out[0]<br><br>";
    29.       } //if
    30.    } // foreach itaem
    31. } // else
    32. ?>
    33.  
    как сделать чтоб заработалдо?
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  6. Casper

    Casper Активный пользователь

    С нами с:
    20 окт 2009
    Сообщения:
    3
    Симпатии:
    0
    не получается ... помогите плз с решением данной задачи