Вопрос по php

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Вообщем надо с html странички слизать все данные и поместить их в массив для последующей обработки. Задача нестандартная, да и я не силен в пхп, прошу совета. Страничка - линия в букмеккерской конторе. Слить надо все коэфы. Вот страничка сама http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1 .
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

php@max, напиши емейл в ихний саппорт (support@marathonbet.com) и попроси сделать RSS-экспорт данных,
как это сделано например, на этом форуме: forum/rss.php

А парсить XML - это стандартная задача.
php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Oscar
Контора слишком серьезная, из за какой то просьбы никто ничего не сделает. Даже не знаю что придумать.
Санек_5054
Сообщения: 15
Зарегистрирован: 31 авг 2006, 08:55
Откуда: Оренбург
Контактная информация:

да как 2 пальца!!! что XML что html , главное голова на плечах а сделать тогда не будет проблем!!!!
------------------- =) ----------------------
Устой традиций надо соблюдать,
Пускай не раз ответят вам отказом.
Конечно Дама может и не "дать",
Но предложить ты ей всегда обязан!!!
------------------- =) ----------------------
php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Вот часть штмл кода, где начинаются ставки:


Код: Выделить всё

         <form name=f1>
<div class=b>
<a name=381339><div class=cap>Баскетбол. WNBA. Плей-офф. Финал. До 3-х побед</div></a><pre><hr color=#CC0033 noshade>
 Дата  Событие        [b]Поб.1[/b]  НичьяХ  Поб.2 <b >  фора1=>кф1  [/b]  фора2=>кф2     [b]тотал[/b]  мен.  бол. <hr color=#CC0033 noshade>
 07/09 <b id=r>1)Сакраменто  [/b] <b >1.38 [/b]  14.00   2.95   <b > -5.5=>1.80  [/b]  +5.5=>1.90   <b >  144.0[/b]  1.85  1.85
 05:00 <b id=r>2)Детройт     [/b]
         Счет серии 2:1

</pre><hr color=#CC0033>

<a name=381340><div class=cap>Баскетбол. Мужчины. ЧЕ-2007. Отборочные матчи</div></a><pre><hr color=#CC0033 noshade>
 Дата  Событие     [b]Поб.1[/b]  НичьяХ  Поб.2 <b >  фора1=>кф1  [/b]  фора2=>кф2     [b]тотал[/b]  мен.  бол. <hr color=#CC0033 noshade>
 06/09 <b id=r>1)Россия   [/b] <b >1.10 [/b]  17.00   6.00   <b >-10.5=>1.85  [/b] +10.5=>1.85   <b >  153.5[/b]  1.85  1.85
 17:30 <b id=r>2)Чехия    [/b]

 06/09 <b id=r>1)Польша   [/b] <b >1.25 [/b]  15.00   3.70   <b > -7.5=>1.85  [/b]  +7.5=>1.85   <b >  146.5[/b]  1.85  1.85
 20:30 <b id=r>2)Украина  [/b]

</pre><hr color=#CC0033><pre><big>[url=#0]Оглавление[/url]</big></pre>

<a name=381280><div class=cap>Бейсбол. OИ-2008. Американский квалификационный турнир. Куба</div></a><pre><hr color=#CC0033 noshade>
 Дата  Событие  [b]Поб.1[/b] Поб.2 <hr color=#CC0033 noshade>
 06/09 <b id=r>1)Куба  [/b] <b >1.22 [/b] 3.80
 04:00 <b id=r>2)США   [/b]

</pre><hr color=#CC0033>

<a name=381270><div class=cap>Бейсбол. MLB</div></a><pre><hr color=#CC0033 noshade>
 Дата  Событие              [b]Поб.1[/b] Поб.2 <b > фора1=>кф1 [/b] фора2=>кф2   [b]тотал[/b] мен. бол. [b]тотал1[/b] мен. бол. [b]тотал2[/b] мен. бол. <hr color=#CC0033 noshade>
 06/09 <b id=r>1)Бостон            [/b] <b >2.15 [/b] 1.62  <b > +1.5=>1.75[/b]  -1.5=>1.95  <b > 10.5[/b]  1.90 1.80 <b > 5.0[/b]   1.75 1.90 <b > 6.0[/b]   1.75 1.90
 03:05 <b id=r>2)Чикаго Уайт Сокс  [/b]

 06/09 <b id=r>1)Вашингтон         [/b] <b >2.15 [/b] 1.62  <b > +1.5=>1.75[/b]  -1.5=>1.95  <b >  9.5[/b]  1.85 1.85 <b > 4.0[/b]   1.85 1.85 <b > 5.0[/b]   1.95 1.72
 03:05 <b id=r>2)Сент-Луис         [/b]

 06/09 <b id=r>1)Детройт           [/b] <b >1.50 [/b] 2.40  <b > -1.5=>2.05[/b]  +1.5=>1.68  <b >  9.0[/b]  1.75 1.95 <b > 5.0[/b]   1.75 1.90 <b > 4.0[/b]   1.75 1.90
 03:05 <b id=r>2)Сиэтл             [/b]

 06/09 <b id=r>1)Торонто           [/b] <b >1.55 [/b] 2.30  <b > -1.5=>2.15[/b]  +1.5=>1.62  <b >  8.5[/b]  1.90 1.80 <b > 4.5[/b]   1.95 1.72 <b > 4.0[/b]   1.75 1.90
 03:05 <b id=r>2)Кливленд          [/b]

 06/09 <b id=r>1)Филадельфия       [/b] <b >1.90 [/b] 1.80  <b > +1.5=>1.56[/b]  -1.5=>2.25  <b >  9.5[/b]  1.75 1.95 <b > 4.5[/b]   1.85 1.85 <b > 4.5[/b]   1.90 1.75
 03:05 <b id=r>2)Хьюстон           [/b]

 06/09 <b id=r>1)Флорида           [/b] <b >1.56 [/b] 2.25  <b > -1.5=>2.15[/b]  +1.5=>1.62  <b >  8.5[/b]  1.90 1.80 <b > 4.5[/b]   1.90 1.75 <b > 4.0[/b]   1.75 1.90
 03:05 <b id=r>2)Аризона           [/b]




Необходимо выбрать из этого все коэфы, заключенные в теги
<b > [/b] ,
причем, чтоб выбирались только цифровые значения, а всякие
<b > фора1=>кф1 [/b]
отсеивались. При всем при этом, чтоб одна строчка штмл составляла одну "ячейку" массива.
Сам процес выборки инфы из тегов (без учета что еще необходимо отсеить то что содержит буквы) вроде должен выглядеть как

Код: Выделить всё

<?php
$url = http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1 //  (Так можно делать ???)
$patern = "#<[/s]*b[/s]*>([^<]*)<[/s]*/b[/s]*>#i";
preg_match($patern, $url, $matches)
Как дальше ? =/
php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Ну скажите хоть через preg_match делать или по другому ...
Санек_5054
Сообщения: 15
Зарегистрирован: 31 авг 2006, 08:55
Откуда: Оренбург
Контактная информация:

делать так : preg_match_all(); и
$url = http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1
урл пишется в кавычках! и еще какой функцией ты док закачал ??? никакой! используй либо file() она дольше раьотает и забивает каждую строку в массив
или (лучший вариант для этого) file_get_contents(); (получает содержимое одной строкой )
------------------- =) ----------------------
Устой традиций надо соблюдать,
Пускай не раз ответят вам отказом.
Конечно Дама может и не "дать",
Но предложить ты ей всегда обязан!!!
------------------- =) ----------------------
php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Код: Выделить всё

<?php
$lines = file('http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1');
foreach($lines as $index => $line)
{
        $patern = "??????";
        preg_match_all ($patern, $line);
Дальше запутался... Допустим(html строка):

Код: Выделить всё

[b]Поб.1[/b] Поб.2 <b > фора1=>кф1 [/b] фора2=>кф2   [b]тотал[/b] мен. бол. [b]тотал1[/b] мен. бол. [b]тотал2[/b] мен. бол. <hr color=#CC0033 noshade>
 06/09 <b id=r>1)Бостон            [/b] <b >2.15 [/b] 1.62  <b > +1.5=>1.75[/b]  -1.5=>1.95  <b > 10.5[/b]  1.90 1.80 <b > 5.0[/b]   1.75 1.90 <b > 6.0[/b]   1.75 1.90
 03:05 <b id=r>2)Чикаго Уайт Сокс  [/b]
Нужно както начисто убрать функцией preg_replace_callback() всякие там "[/b] фора2=>кф2 " и потом уже парсить то что остается, еще при этом в таких:

Код: Выделить всё

<b > -7.5=>1.85  [/b]
местах повырезать все между тегом <b > и знаком => .

Завтра подумаю как все это решить...
php@max
Сообщения: 14
Зарегистрирован: 05 сен 2006, 15:15

Так ну уже на половину понятно

Код: Выделить всё

<?php
$lines = file('http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1');
$musor = array(" <b >  ôîðà1=>êô1  [/b]", "  <b >   1X[/b]", " <b >  2:0 [/b]",
               "<b > 3:0 [/b]", " <b > 0:3 [/b]", "<b >     [/b]";
$subject =  $lines
$patern = $musor
$replacment = ""
preg_replace($patern, $replacment, $subject)
Теперь надо из всех:

Код: Выделить всё

[/b]  +7.5=>1.85   <b >
оставить только :

Код: Выделить всё

[/b]1.85   <b >
Санек_5054
Сообщения: 15
Зарегистрирован: 31 авг 2006, 08:55
Откуда: Оренбург
Контактная информация:

вот маска по которой дергается то что надо + мусор :
$mask="|< b>(.*)[/b]|Ui";
как убрать мусор подумай и напиши сам!
------------------- =) ----------------------
Устой традиций надо соблюдать,
Пускай не раз ответят вам отказом.
Конечно Дама может и не "дать",
Но предложить ты ей всегда обязан!!!
------------------- =) ----------------------
Ответить