Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 5. 10. 2009, 13:37:13
Mám dynamicky generovaný a každodenně aktualizovaný XML soubor (hokejové zápasy) s následující strukturou:
<?xml version="1.0" encoding="utf-8"?> <Export last_change="2007-10-11 20:22:42" uid="1192126962.33" > <Matchday date="2007-10-11"> <Match id="7273" league_code="10" start_time="18:30" round="11" status="Sched" status_type="Sched" period="0" last_change="2007-10-11 20:22:42" > <Home id="LIB" name="Bílí Tygři Liberec"/> <Away id="PCE" name="HC Moeller Pardubice"/> <Results> <Result id="1" name="CURRENT" value="0-0"/> <Result id="2" name="FT" value="0-0"/> </Results> <Periods> <Period id="1" name="1P" value="0-0" /> <Period id="2" name="2P" value="0-0" /> <Period id="3" name="3P" value="0-0" /> <Period id="4" name="OT" value="0-0" /> <Period id="5" name="PN" value="0-0"/> </Periods> <Scorers> </Scorers> <Cards> </Cards> </Match> <Match id="7271" league_code="10" start_time="17:25" round="11" status="Fin" status_type="Fin" period="k" last_change="2007-10-11 19:46:43" > <Home id="KLA" name="HC GEUS OKNA Kladno"/> <Away id="KVA" name="HC Energie Karlovy Vary"/> <Results> <Result id="1" name="CURRENT" value="2-6"/> <Result id="2" name="FT" value="3-6"/> </Results> <Periods> <Period id="1" name="1P" value="1-1" /> <Period id="2" name="2P" value="1-4" /> <Period id="3" name="3P" value="1-1" /> <Period id="4" name="OT" value="0-0" /> <Period id="5" name="PN" value="0-0"/> </Periods> <Scorers> <Scorer name="Kraft" assist_1 = "Bílek" assist_2 = "" period="1" team="KVA" time="12" type=""/> <Scorer name="Grof" assist_1 = "Skladaný" assist_2 = "" period="2" team="KVA" time="31" type=""/> <Scorer name="Hluchý" assist_1 = "Duben" assist_2 = "" period="2" team="KVA" time="34" type=""/> <Scorer name="Zucker" assist_1 = "Mi.Procházka" assist_2 = "" period="2" team="KVA" time="36" type=""/> <Scorer name="Skladaný" assist_1 = "Kristek" assist_2 = "" period="2" team="KVA" time="37" type=""/> <Scorer name="Čurilla" assist_1 = "M.Procházka" assist_2 = "" period="2" team="KLA" time="38" type=""/> <Scorer name="Bílek" assist_1 = "Němec" assist_2 = "" period="3" team="KVA" time="51" type=""/> <Scorer name="Ševc" assist_1 = "Kalla" assist_2 = "" period="1" team="KLA" time="8" type=""/> </Scorers> <Cards> </Cards> </Match> </Matchday> </Export> Každý zápas má svůj ukazatel league_code, podle kterého potřebuji vyfiltrovat pouze zápasy v extralize - ta má league_code 10, play-off je potom league_code 11. Pak chci zjistit, zda je tam tým s ID KVA (Karlovy Vary). Pokud budu chtít sledovat i aktuální třetinu (atribut period elementu match), zde je číselník tohoto atributu: 0 - před zápasem 1 - první třetina 1p - po 1. třetině 2 - druhá třetina 2p - po druhé třetině 3 - třetí třetina 3p - po třetí třetině 4 - prodloužení 4p - po prodloužení, před samostatnými nájezdy sn - probíhají samostatné nájezdy k - konec kp - konec po prodloužení kn - konec po samostatných nájezdech a pak tam jsou ještě xo - utkání odloženo xp - utkání přerušeno xy - utkání zrušeno xk - utkání kontumováno A nyní potřebuji pomocí parsování: 1. zjistit, zda běží zápas extraligy nebo play-off a jedním z hracích týmů jsou Karlovy Vary a pokud ano 2. vypsat na výstup čas začátku utkání, která třetina se právě hraje, názvy obou týmů a stav utkání včetně vývoje po řetinách podobně, jako je tomu na http://www.onlajny.cz/detail.php?id=7271&hra=hokej Gůglil jsem, samozřejmě. Ale našel jsem jen jednoduché parsery a popravdě - beztak jsem z toho jelen. P.S.: Povolení k vytěžování cizí databáze mám. |
||
ondra121 Profil * |
#2 · Zasláno: 5. 10. 2009, 14:26:34
Prostuduj si regulární výrazy a vytvoř si vlastní parser, bude se ti to určitě do budoucna hodit.
|
||
tiso Profil |
#3 · Zasláno: 5. 10. 2009, 14:46:08
ondra121 ???
mackopu začiatok riešenia: $xml=simplexml_load_file('export.xml'); foreach($xml->Matchday->Match as $match){ if(($match['league_code'] == 10 OR $match['league_code'] == 11) AND ($match->Home['id'] == 'KVA' OR $match->Away['id'] == 'KVA')){ echo $match['start_time']; echo $match['period']; echo $match->Home['name']; echo $match->Away['name']; ... } else{continue;} } |
||
ondra121 Profil * |
#4 · Zasláno: 5. 10. 2009, 14:53:15
Dobře no, šel jsem na to trochu složitě ;-)
|
||
mackopu Profil |
#5 · Zasláno: 5. 10. 2009, 15:15:17
tiso
Perfektní, to je ono. Teď už si poradím. Díky moc! |
||
mackopu Profil |
#6 · Zasláno: 6. 10. 2009, 13:00:43
Ještě poslední věc - jak vypíši jednotlivé střelce daného zápasu (atribut name elementu Scorer)?
Tedy i s ohledem na to, že jich může být jiný počet než v uvedené ukazce... |
||
Kajman_ Profil * |
#7 · Zasláno: 6. 10. 2009, 13:10:57
foreach($match->Scorers->Scorer as $scorer) {...} |
||
mackopu Profil |
#8 · Zasláno: 6. 10. 2009, 13:21:23
Prosté, děkuji. Chci to použít (zanořit) v té části kódu od tiso, kde ponechal tři tečky. Snad to bude fungovat.
|
||
Časová prodleva: 15 let
|
0