Regularni izrazi (opet)

Regularni izrazi (opet)

offline
  • Pridružio: 05 Nov 2007
  • Poruke: 21
  • Gde živiš: Malta

Cao,

Prvo da objasnim sta je problem pa ce biti lakse da se razume pitanje ... bar mislim ...

Za moju firmu pravim parser za XML feed za odds (kvote za kladjenja) koji poredi nase kvote sa najvecim konkurentima pa da vidimo 'gde se nalazimo' ... 'da li smo najskuplji' i slicno. Skript se ucitava svaki 5 minuta i pokupi sve sto su promenili u bazi ti od kojim smo kupili feed - da bi posle prikazao da li je neki konkurent podigao ili spustio drasticno neku kvotu pa da i mi odreagujemo.

Za svaki mec imamo nekoliko odabranih 'ljutih konkurenata' cije promene pratimo (ovde dole u primeru company1.com i company2.com. Ako se neka kvota promeni onda u OFFER delu ovog XML-a se prikaze prethodna i nova vrednost za 1 X 2 (dve grupe o1-o2-o3 imamo u OFFER bloku za company1.com) da bi uocili promenu. A ako neki konkurent stavlja prvi put kvotu onda imamo samo jednu grupu o1-o2-o3 (za company2.com)

Primer XML koda sa promenjenim kvotama:

<bookmaker bid="343" name="company1.com"> <offer id="21799071" ot="0" last_updated="2007-11-11T13:09:06+00:00" flags="0"> <odds i="0" time="2007-11-11T12:54:33+00:00"> <o1>3.3</o1> <o2>2.85</o2> <o3>2.5</o3> </odds> <odds i="5" time="2007-11-06T12:10:30+00:00"> <o1>2.55</o1> <o2>3.2</o2> <o3>2.65</o3> </odds> </offer> </bookmaker>


Primer XML koda sa prvo-postavljenim kvotama:

<bookmaker bid="548" name="company2.com"> <offer id="21799071" ot="0" last_updated="2007-11-11T13:09:06+00:00" flags="0"> <odds i="0" time="2007-11-11T12:54:33+00:00"> <o1>3.3</o1> <o2>2.85</o2> <o3>2.5</o3> </odds> </offer> </bookmaker>

E sad ... ja sam ovo odradio uz pomoc xml-parsera u PHP ali to mnoooooogo sporo radi a posto je ovde brzina jako bitna resio sam da probam sa regularnim izrazima.

Pitanje je:

Da svaki OFFER blok ima isti broj stavki u sebi a ne nekad 1 nekad 2 - lako je i radi ko metak za vestacki napravljen primer kad za svakog bookmakera stavim da ima po dva o1-o2-o3 bloka. I vrlo sam ponosan na sebe jer do pre neki dan nisam znao ni da beknem Sad

Ali kako da postavim regularni izraz da ceo OFFER blok:

<odds ....>
o1-o2-o3
</odds>

vidi jel ima 1 ili 2 puta i da pokupim parametre "i", "time", o1-o2-o3?

Hvala unapred



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

Nekako mi je promakla ova tema. Evo kako bi ja odradio to:
Pokupio bih sve sto se nalazi izmedju odds tagova regularnim izrazom:
{<odds.*>(.?*)</odds>}
onda bi ovo unutar odradio na sledeci nacin:
pomocu preg_replace bi skinuo ove tagove i tagove koji zatvaraju o tag bi zamenio nekim znakom, mozda %, onda bi odradio implode po tim istom znaku i dobio niz vrednosti unutar odds taga. nadam se da je jasno sta sam hteo reci...



Ko je trenutno na forumu
 

Ukupno su 835 korisnika na forumu :: 43 registrovanih, 5 sakrivenih i 787 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Andrija357, ArchaBasha, Areal84, arton, bankulen, Bubimir, cavatina, cenejac111, Dimitrise93, Djole, DPera, FileFinder, havoc995, ikan, Karla, kolle.the.kid, Kubovac, kunktator, Marko Marković, mercedesamg, mile23, moldway, nenad81, nuke92, oldtimer, opt1, pacika, Panter, Pohovani_00, Ripanjac, Sale.S, sasa76, Shinobi, Simon simonović, StepskiVuk, vlad4, VP6919, YugoSlav, zziko, |_MeD_|, šumar bk2, 1107