За последние 24 часа нас посетили 17919 программистов и 1612 роботов. Сейчас ищут 1426 программистов ...

Подсчитать домены в списке субдоменов

Тема в разделе "PHP для новичков", создана пользователем Erikson, 21 апр 2009.

  1. Erikson

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

    С нами с:
    7 апр 2007
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    СПб
    Все в общем можно реализовать средствами php, но алгоритм придумывается сильно мудреный. Не подскажет всезнающий как попроще сделать эту задачу?

    Имеется список субдоменов:
    www.mail.ru
    online.radiovanya.ru
    mptri.net
    vkontakte.ru
    cs1748.vkontakte.ru
    update.nai.com
    life.ru
    img.desktopwallpapers.ru
    www.daler.ru
    estb.msn.com
    cs4206.vkontakte.ru
    415.gt2.vkadre.ru
    cs4208.vkontakte.ru
    417.gt2.vkadre.ru
    an.yandex.ru
    cs1054.vkontakte.ru

    Надо подсчитать количество каждого домена в списке. Список очень большой и в ручную считать тяжело.
     
  2. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    те.е шо б вышло типа этого?

    из выше изложенного списка:

    vkontakte.ru - 5
    yandex.ru - 1
    life.ru - 1
    radiovanya.ru - 1
    и т.д.?
     
  3. Erikson

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

    С нами с:
    7 апр 2007
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    СПб
    Точно! Продумываю алгоритм работы со строками, но может есть конкретные команды работы с урлами?
     
  4. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    PHP:
    1.  
    2. [b]index.php[/b]
    3. <?php
    4. $host = array();
    5. $host_new = array();
    6.  
    7. $f = fopen("url.txt", "r");
    8. while(!feof($f)){
    9.   $n = trim(fgets($f, 1024));
    10.   if (!$n) continue;
    11.   list ($date, $text) = preg_split('/\s+/', $n);
    12.   $host[] = array(
    13.     'url' => $date,
    14.   );
    15. }
    16. foreach ($host as $arr)
    17. {
    18.     foreach ($arr as $key => $value)
    19.     {
    20.         preg_match("/[^\.]+\.[^\.]+$/is", $value, $matches);
    21.         $host_new[] = $matches[0]; 
    22.     }
    23. }
    24. $final = array_count_values($host_new);
    25.  
    26. foreach ($final as $key => $value)
    27. {
    28.     echo "<b>Домен:</b> ".$key." <b> -  ".$value."</b><br>";
    29.    
    30. }
    31.  
    HTML:
    1.  
    2. [b]url.txt[/b]
    3.  
    4. /*
    5. В документе url.txt лежат эти домены в тако виде:
    6. [url=http://www.mail.ru]www.mail.ru[/url]
    7. online.radiovanya.ru
    8. mptri.net
    9. vkontakte.ru
    10. cs1748.vkontakte.ru
    11. update.nai.com
    12. life.ru
    13. img.desktopwallpapers.ru
    14. [url=http://www.daler.ru]www.daler.ru[/url]
    15. estb.msn.com
    16. cs4206.vkontakte.ru
    17. 415.gt2.vkadre.ru
    18. cs4208.vkontakte.ru
    19. 417.gt2.vkadre.ru
    20. an.yandex.ru
    21. cs1054.vkontakte.ru
    22. */
    23.  
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    alexeurodnepr, вы зачем экранируете символ точки внутри группы? :D
     
  6. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  7. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Apple

    хз вообще то я читал, что когда просто точку пишешь то это считается как любой символ но мне нужно было именно точку, видимо в [] оно и считается как точка... не знал:) вообще м шо так шо так пашет :)
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    alexeurodnepr, любой символ - это когда он вне группы. :)

    А вообще, обычной регуляркой выделяем домен и проходимся по списку.
    Пример писать лень)
     
  9. Erikson

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

    С нами с:
    7 апр 2007
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    СПб
    Спасибо! Примеров и не надо. Нужен грамотный алгоритм.
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Erikson, вы ещё хотите, чтобы за вас вам кто-то грамотный алгоритм написал?
     
  11. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Erikson


    чем тебе мое бесплатное не нравится? :) ну да есть не до четы но пашет же...
     
  12. Erikson

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

    С нами с:
    7 апр 2007
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    СПб
    Эх, други... У вас стандартная реакция в этом форуме "для начинающих". А ведь никто и не сомневается в вашем мастерстве, поэтому и вопрошают.

    Нет, алгоритм мне такой не нужен... Справлюсь сам как-нибудь... Мне не экзамены сдавать. Всем спасибо!

    Отдельное спасибо alexeurodnepr! Не посмеялся над чайником.