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

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

  • artoodetoo

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

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

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

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

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

    phpdude, это не байтоптимизация, а использование средств по назначению, имхо
    adw/0
  • phpdude

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

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

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

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

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

    phpdude, сокеты тоже написаны для работы с сетью. однако ты пропагандируешь именно курл…
    adw/0
  • phpdude

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

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

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

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

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

    phpdude, так же как и фун-ии для работы со строками предназначены для работы со строками…
    adw/0
  • phpdude

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

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

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

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

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

    phpdude, вот так же и сокеты предназначены для работы с сетью :)
    adw/0
  • 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

    Сообщения: 26618 Репутация: 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

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

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

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

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

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

    дописал

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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