php preg match all

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een ripper te maken van voetbal.nl om alle uitslagen / programma van mijn club te kunnen automatiseren.

Ik heb de curl unit al klaar en ook het inloggen etc gaat allemaal automatisch.
Nu heb ik het complete programma ook kunnen ophalen alleen nu moet ik de gegevens eruit filteren.

Helaas ben ik niet bekend met preg_match_all dus daarmee lukt het me totaal niet.
Ik heb het nu gemaakt met steeds substringen te nemen en zo de juiste content eruit te filteren.

Dat is natuurlijk niet de meeste nette oplossing en iemand vertelde me kijk eens naar preg match.
Ik kom er totaal niet uit en via de php website lukt het met ook niet.

het stukje wat continu herhaald wordt voor in dit geval het programma is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
               <div class="tabel-wedstrijd"> 
                                <div class="datum-tijd">20 feb, 14:45</div> 
                    <div class="status"> 
                    <div class="wedstrijd" style="width:312px;"> 
                        <div class="" style="margin:0px 0px 0px 4px;">Unitas'30 5(zat)</div> 
                        <div style="margin:0px 0px 0px 4px;">&nbsp;&nbsp;-&nbsp;&nbsp;</div> 
            <div class=""style="margin:0px 0px 0px 4px;">FC Bergen 3(zat)</div> 
                    </div> 
                    <div class="type">co</div> 
                    </div> 
                    <div class="details"><a class="fancy-box" href="/clubs-competities/mijn/details/140364/4167749?iframe" width=552 height=320><img src="http://files.voetbal.nl/voetbalmedia/sites/voetbal.nl/themes/knvb_senioren/images/btn-questionmark.gif" width="12" height="13" alt=""></a></div> 
                    <div class="wedstrijdnr"style="margin-left:12px;width:48px; text-align:right;">16390</div> 
                    <div class="scheidsrechter" style="margin-left:18px;"></div> 
 
               </div> 
 
               
               <div class="tabel-wedstrijd even"> 
                                <div class="datum-tijd">20 feb, 14:45</div> 
                    <div class="status"> 
                    <div class="wedstrijd" style="width:312px;"> 
                        <div class="" style="margin:0px 0px 0px 4px;">Unitas'30 A1</div> 
                        <div style="margin:0px 0px 0px 4px;">&nbsp;&nbsp;-&nbsp;&nbsp;</div> 
            <div class=""style="margin:0px 0px 0px 4px;">DIA A1</div> 
                    </div> 
                    <div class="type">co</div> 
                    </div> 
                    <div class="details"><a class="fancy-box" href="/clubs-competities/mijn/details/140373/4183181?iframe" width=552 height=320><img src="http://files.voetbal.nl/voetbalmedia/sites/voetbal.nl/themes/knvb_senioren/images/btn-questionmark.gif" width="12" height="13" alt=""></a></div> 
                    <div class="wedstrijdnr"style="margin-left:12px;width:48px; text-align:right;">21191</div> 
                    <div class="scheidsrechter" style="margin-left:18px;">Dinter, M. van</div> 
 
               </div>


Dit de ene keer is het even en andere keer zonder even.

mijn regexpressie was:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$reg =  '<div class="(.*?)"> 
                                <div class="datum-tijd">(.*?)</div> 
                    <div class="status"> 
                    <div class="wedstrijd" style="width:312px;"> 
                        <div class="" style="margin:0px 0px 0px 4px;">(.*?)</div> 
                        <div style="margin:0px 0px 0px 4px;">&nbsp;&nbsp;-&nbsp;&nbsp;</div> 
            <div class=""style="margin:0px 0px 0px 4px;">(.*?)</div> 
                    </div> 
                    <div class="type">(.*?)</div> 
                    </div> 
                    <div class="details"><a class="fancy-box" href="/clubs-competities/mijn/details/140364/4167749?iframe" width=552 height=320><img src="http://files.voetbal.nl/voetbalmedia/sites/voetbal.nl/themes/knvb_senioren/images/btn-questionmark.gif" width="12" height="13" alt=""></a></div> 
                    <div class="wedstrijdnr"style="margin-left:12px;width:48px; text-align:right;">(.*?)</div> 
                    <div class="scheidsrechter" style="margin-left:18px;"></div> 
 
               </div>';


maar wanneer ik de preg_match functie run met
code:
1
2
preg_match_all($reg, $html, $matches, PREG_SET_ORDER);
var_dump($matches);


ik krijg dan de meldingen
code:
1
2
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '<' in /home/jeroen/thinq-develop/public_html/unitas/index.php on line 45
NULL


krijg ook foutmeldingen zoals je ziet....:(

dit moet toch kunnen met preg match.... anders moet ik het bij mijn substringetjes laten....

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik quote even creepy's sig:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. — Jamie Zawinski
Met andere woorden: hier wil je niet aan beginnen met regular expressions. Ze hebben zeker hun nut, maar het parsen van HTML valt daar niet (of zelden) onder.

Kijk eerder eens naar PHP's DOMDocument.

Wat betreft je foutmelding: nogal wiedes. Je zult alle gereserveerde tekens (modifiers) moeten escapen; daar zie ik niets van terug.

[ Voor 56% gewijzigd door RobIII op 17-02-2010 13:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Als ik zo kijk valt het aantal gereserveerde tekens erg mee. Het werkt al als je er # en # omheen zet, en even een \ voor die ?iframe zet... })

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
yes met die # werkt het :)

zit nu met probleem wanneer ik maar iets verander aan de $reg spatie weghaal ofz, hij het dan gelijk niet meer doet.

ik heb het geprobeerd op telossen met \s+ achter iedere regel te zetten, maar dit was geen succes... is daar nog een oplossing voor? of moet het gewoon exacte copy zijn?

ps. naar het dom document ben ik ook aan het kijken of ik het daar eventueel gemakkelijker mee kan doen

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 17 februari 2010 @ 14:15:
zit nu met probleem wanneer ik maar iets verander aan de $reg spatie weghaal ofz, hij het dan gelijk niet meer doet.
En dat is nou precies waarom je die regex moet laten varen. En bij elke scheet die de andere partij wijzigt in de HTML ga je ook op je bek en matched er helemaal niets meer. En dan mag je weer een-of-andere regex gaan zitten ontleden hoe 'ie ook weer werkte en dan maar weer zien uit te vogelen hoe/wat je moet aanpassen om 't weer werkend te krijgen.

[ Voor 34% gewijzigd door RobIII op 17-02-2010 15:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
okeej :) daar heb je idd een goed punt, ik ben het nu met dom document aan het maken, maar als ze daar van de divs ineens tables maken heb ik ook een probleem :)

volgens mij houd je dat altijd als je html gaat kopieren

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 17 februari 2010 @ 14:47:
maar als ze daar van de divs ineens tables maken heb ik ook een probleem :)

volgens mij houd je dat altijd als je html gaat kopieren
Uiteraard, maar je code is een helluvalot leesbaarder en makkelijker te onderhouden dan een regex ;)

[ Voor 12% gewijzigd door RobIII op 17-02-2010 15:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • wbeke01
  • Registratie: Maart 2010
  • Laatst online: 13-01-2022
Beste Timbo

Is het jou gelukt om de gegevens van voetbal.nl nu eraf te halen? Mij lukt het niet. Alvast bedankt

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 18:56

SinergyX

____(>^^(>0o)>____

RobIII schreef op woensdag 10 maart 2010 @ 19:55:
[...]

:D HOLY.... Wat een ongeorganiseerde puinhoop :X :X
Maar het werkt, wat is het probleem?

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, als je het vertrouwt kan je het als kant en klare shit overnemen en vooral verder niet meer aanraken. :+

Maar als je het niet vertrouwt, je niet van spaghetti code houdt, er zelf geen PHP3 code style op na houdt of er wat aan wilt sleutelen moet je er met een grote boog omheen lopen. ;) Het is iig niet het soort code dat je in je portfolio moet zetten. :P

{signature}

Pagina: 1