Страница 1 из 3
Вопрос по php
Добавлено: 05 сен 2006, 15:24
php@max
Вообщем надо с html странички слизать все данные и поместить их в массив для последующей обработки. Задача нестандартная, да и я не силен в пхп, прошу совета. Страничка - линия в букмеккерской конторе. Слить надо все коэфы. Вот страничка сама
http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1 .
Добавлено: 05 сен 2006, 16:26
Oscar
php@max, напиши емейл в ихний саппорт (
support@marathonbet.com) и попроси сделать RSS-экспорт данных,
как это сделано например, на этом форуме:
forum/rss.php
А парсить XML - это стандартная задача.
Добавлено: 05 сен 2006, 19:39
php@max
Oscar
Контора слишком серьезная, из за какой то просьбы никто ничего не сделает. Даже не знаю что придумать.
Добавлено: 05 сен 2006, 21:28
Санек_5054
да как 2 пальца!!! что XML что html , главное голова на плечах а сделать тогда не будет проблем!!!!
Добавлено: 06 сен 2006, 13:41
php@max
Вот часть штмл кода, где начинаются ставки:
Код: Выделить всё
<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)
Как дальше ? =/
Добавлено: 07 сен 2006, 17:06
php@max
Ну скажите хоть через preg_match делать или по другому ...
Добавлено: 07 сен 2006, 17:30
Санек_5054
делать так : preg_match_all(); и
$url =
http://www.marathonbet.com/odds.shtml?h=0&r0=0&asp=1
урл пишется в кавычках! и еще какой функцией ты док закачал ??? никакой! используй либо file() она дольше раьотает и забивает каждую строку в массив
или (лучший вариант для этого) file_get_contents(); (получает содержимое одной строкой )
Добавлено: 07 сен 2006, 22:14
php@max
Код: Выделить всё
<?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 > и знаком => .
Завтра подумаю как все это решить...
Добавлено: 07 сен 2006, 23:05
php@max
Так ну уже на половину понятно
Код: Выделить всё
<?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)
Теперь надо из всех:
оставить только :
Добавлено: 08 сен 2006, 13:32
Санек_5054
вот маска по которой дергается то что надо + мусор :
$mask="|< b>(.*)[/b]|Ui";
как убрать мусор подумай и напиши сам!