ФорумПрограммированиеPHP для идиотов → правильно выпарсить данные

правильно выпарсить данные

  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 2:53, спустя 51 минуту 42 секунды

    время потраченное на оптимизацию лучше было бы употребить на секс. полюбому
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 3:24, спустя 30 минут 52 секунды

    phpdude, это не байтоптимизация, а использование средств по назначению, имхо
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 3:35, спустя 11 минут 13 секунд

    adw0rd, имхо регулярные выражения и написаны ради таких задач и использовать их - использовать по назначению, но может это имхо конечно)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 3:39, спустя 3 минуты 59 секунд

    phpdude, сокеты тоже написаны для работы с сетью. однако ты пропагандируешь именно курл…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 6:55, спустя 3 часа 15 минут 31 секунду

    adw0rd, а курл именно для работы с хттп + хттпс
    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 7:44, спустя 48 минут 56 секунд

    phpdude, так же как и фун-ии для работы со строками предназначены для работы со строками…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 7:47, спустя 2 минуты 49 секунд

    adw0rd, как и регулярные выражения предназначены для рботы со строками ;)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 апреля 2009 г. 7:56, спустя 9 минут 13 секунд

    phpdude, вот так же и сокеты предназначены для работы с сетью :)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 6 апреля 2009 г. 1:07, спустя 4 дня 17 часов 11 минут

    phpdude,
    header("Content-type: text/html; charset=utf-8");

    $content = file_get_contents("http://tv.akado.ru/channels/1_kanal.html?channel=36&time=2009-03-30");

    preg_match("#<table class=\"tv-channel-full\">(.*?)</table>#ism",$content,$table);
    preg_match_all("#<tr><td class=\"tv-broadcast-time\"><span class=\"tv-time\">(.*?)</span>.*?class=\"tv-blue\">(.*?)</a><p>(.*?)</p>#ism",$table[1],$data,PREG_SET_ORDER);

    echo "<pre>";
    print_r($data);


    твой код не полностью парсит некоторые каналы… допустим
    http://tv.akado.ru/channels/muzh-tv.html?channel=36&time=2009-04-06
    некоторые программы пропускает. я ошибки не увидел
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 апреля 2009 г. 3:03, спустя 1 час 55 минут 15 секунд

    Pasha, ну я же не разделе готовые решения написал :) найди ошибку ;)
    Сапожник без сапог
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 6 апреля 2009 г. 4:04, спустя 1 час 1 минуту 33 секунды

    [2] => Array
    (
    [0] => <td class="tv-broadcast-time"><span class="tv-time">08:30</span></td><td class="tv-broadcast-name x"><p>Самородки недели</p><p>Лучшие моменты шоу народного творчества</p></td></tr><tr><td class="tv-broadcast-time"><span class="tv-time">09:00</span></td><td class="tv-broadcast-name x"><p>Звёзды зажигают</p><p>Хит-парад достижений знаменитостей</p></td></tr><tr><td class="tv-broadcast-time"><span class="tv-time">09:45</span></td><td class="tv-broadcast-name x"><p>Мультфильм</p></td></tr><tr><td class="tv-broadcast-time"><span class="tv-time">10:15</span></td><td class="tv-broadcast-name x"><a href="http://tv.akado.ru/programs/myztv_hit.html" class="tv-blue">Музтв хит</a><p>Самые популярные и горячие хиты - только лидеры мировых и российских чартов!</p>

    [1] => 08:30
    [2] => Музтв хит
    [3] => Самые популярные и горячие хиты - только лидеры мировых и российских чартов!
    )

    он считывает только первое значение (08:30) … 09:00 не трогает… мне как то нужно отделить получается?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 апреля 2009 г. 4:39, спустя 35 минут 8 секунд

    какое еще второе значение?
    Сапожник без сапог
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 6 апреля 2009 г. 6:53, спустя 2 часа 13 минут 58 секунд

    дописал

    preg_match_all("#<td class=\"tv-broadcast-time\"><span class=\"tv-time\">(.*?)</span>.*?<p>(.*?)</p>|\class=\"tv-blue\">(.*?)</a>\</td>#ism",$table[1],$data,PREG_SET_ORDER);


    выдирает только текст из <p></p>

       [0] => Array
           (
               [0] => <td class="tv-broadcast-time"><span class="tv-time">06:45</span></td><td class="tv-broadcast-name x"><a href="http://tv.akado.ru/programs/nashe.html" class="tv-blue">Наше</a><p>Нон-стоп русской музыки</p>
               [1] => 06:45
               [2] => Нон-стоп русской музыки
           )

       [1] => Array
           (
               [0] => <td class="tv-broadcast-time"><span class="tv-time">07:30</span></td><td class="tv-broadcast-name x"><a href="http://tv.akado.ru/programs/interaktiv_chart.html" class="tv-blue">Interактив чарт</a><p>Хит-парад мелодий для мобильных телефонов. Новые, модные, лучшие рингтоны на Муз-ТВ!</p>
               [1] => 07:30
               [2] => Хит-парад мелодий для мобильных телефонов. Новые, модные, лучшие рингтоны на Муз-ТВ!
           )


    но бывает что название прячется в <p>…</p> и в class="tv-blue">…</a>
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 апреля 2009 г. 23:46, спустя 16 часов 52 минуты 32 секунды

    <?
    header("Content-type: text/html; charset=utf-8");

    $content = file_get_contents("http://tv.akado.ru/channels/muzh-tv.html?channel=36&time=2009-04-06");

    preg_match("#<table class=\"tv-channel-full\">(.*?)</table>#ism",$content,$table);
    preg_match_all("#<tr><td class=\"tv-broadcast-time\"><span class=\"tv-time\">(.*?)</span>.*?class=\"tv-blue\">(.*?)<.*?<p>(.*?)</p>#ism",$table[1],$data,PREG_SET_ORDER);

    echo "<pre>";
    print_r($data);
    это код

    это пример http://94.31.169.103/tv.php
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 7 апреля 2009 г. 1:53, спустя 2 часа 6 минут 50 секунд

    phpdude, то есть на оперативку посрать? ну ок…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!