За последние 24 часа нас посетили 21262 программиста и 1000 роботов. Сейчас ищут 719 программистов ...

Анализ вывода скрипта

Тема в разделе "PHP для новичков", создана пользователем ParSulTang, 20 июл 2008.

  1. ParSulTang

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

    С нами с:
    2 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Москва
    bans.php:
    PHP:
    1.  
    2. $bans = file("serverbanlist.con");
    3.     $number_of_bans = count($bans);
    4.     if ($number_of_bans == 0)
    5.     {
    6.         echo "Забаненных нет";
    7.     }
    8.     for ($i=0; $i<$number_of_bans; $i++)
    9.     {
    10.      $part        = explode(",", $bans[$i]);
    11.      $ban_name    = trim($part[0]);
    12.      $ban_ip      = trim($part[1]);
    13.      $ban_keyhash = trim($part[2]);
    14.      $ban_guid    = trim($part[3]);
    15.      $ban_admin   = trim($part[4]);
    16.      $ban_banned  = trim($part[5]);
    17.      $ban_expires = trim($part[6]);
    18.      $ban_reason  = trim($part[7]);
    19.  
    20.      echo "
    21.         <table>
    22.             <tr>
    23.                 <td>$ban_name</td>
    24.             </tr>
    25.         </table>
    26.           ";
    27.     }
    serverbanlist.con:
    Код (Text):
    1. "OttOO",*,a2a40f1d21f27e512dc07f0c0edb426b,78d29dbe78db8b0fbf1884c5e15041c1,"operator",1213823864,0,too many kicks for minus-score
    2. "OttOO",71.195.1.202,a2a40f1d21f27e512dc07f0c0edb426b,78d29dbe78db8b0fbf1884c5e15041c1,"operator",1213823875,0,too many kicks for minus-score
    3. "Eli Russ",71.190.225.206,*,*,"operator",1213824172,0,too many kicks for minus-score
    4. "chabo666",*,f42511700263d6f9fa2f4fc105b4fc43,f711e85466b0314ec20f3acf566ab375,"operator",1213824546,0,too many kicks for minus-score
    5. "chabo666",90.57.141.105,f42511700263d6f9fa2f4fc105b4fc43,f711e85466b0314ec20f3acf566ab375,"operator",1213824555,0,too many kicks for minus-score
    6. "Ben",*,71d18d38924468a6ab9964e987e89223,*,"operator",1213881892,0,too many kicks for minus-score
    7. "Ben",82.237.206.57,71d18d38924468a6ab9964e987e89223,*,"operator",1213881904,0,too many kicks for minus-score
    вывод скрипта bans.php в браузере:
    Код (Text):
    1. "OttOO"
    2. "OttOO"
    3. "Eli Russ"
    4. "chabo666"
    5. "chabo666"
    6. "Ben"
    7. "Ben"
    Нужно во-первых, избавиться от кавычек в выводе, чтобы ники игроков выводились без них, во-вторых избавиться от повторяющихся значений, если они будут встречаться в файле. То бишь чтобы было не как в первом выводе, а так:

    Код (Text):
    1. OttOO
    2. Eli Russ
    3. chabo666
    4. Ben
     
  2. Anonymous

    Anonymous Guest

    Круто. Вопрос в чем?
     
  3. ParSulTang

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

    С нами с:
    2 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Москва
    Как это сделать?
     
  4. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Чтобы отрезать кавычки в начале и в конце воспользуйся функцией trim
    Например,
    PHP:
    1. trim ($a, '"');
    Чтобы отсеять повторяющиеся, заноси каждый выводимый ник в массив, а потом проверяй есть ли такой ник в массиве или нет. Если уже есть, то не выводи его, а если нет, то выводи и заноси в массив.

    :)
     
  5. ParSulTang

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

    С нами с:
    2 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Москва
    C кавычками разобрался и убрал, спс. А про массив можно чуть подробнее? Я пробую через in_array, но не получается. Если можно, пример синтаксиса.
     
  6. Anonymous

    Anonymous Guest

    array_unique
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1.  
    2. <?
    3. $arr=array();
    4. for ($i=0; $i<$number_of_bans; $i++)
    5.      {
    6.          $part        = explode(",", $bans[$i]);
    7.        
    8.          $ban_name =trim($part[0]);
    9.       if (!in_array($ban_name,$arr['name'])) {
    10.          echo "
    11.         <table>
    12.             <tr>
    13.                 <td>$ban_name</td>
    14.             </tr>
    15.         </table>
    16.           ";
    17.          $arr['name'][]=$ban_name;
    18.        }
    19.      }
    20. ?>
     
  8. ParSulTang

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

    С нами с:
    2 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Москва
    спасибо, отцы
     
  9. shreck

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

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Вот пример того, почему нужно пользоваться базой данных :)
     
  10. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    не-а. если банов немного, достаточно правильно настроить работу с текстовым файлом.
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    яб хранил в серилизованном виде...
     
  12. ParSulTang

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

    С нами с:
    2 окт 2007
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Москва
    Ой, и не говорите. Хотя производитель игрового сервера ведь не расчитывал, что кому-то может понадобиться выводить инфу таким образом из его файлов.