[PHP] HTML naar Array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
Hallo,

Ik heb een probleem en kom er niet uit.

Ik heb een HTML site en wil de inhoud hiervan graag omzetten naar een array zodat ik deze eenvoudig kan inlezen in een database.

Normaal is dit niet zo een probleem. Het probleem nu is dat er in de gegevens een gelaagdheid zit maar in de opbouw van de website, qua tags, niet overal.

Voorbeeld van de html:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<div class="container">
 <div>Speler</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>

 <div>Speler</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>

 <div>Speler</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="datum">Gewonnen </div>
   </div>

</div>


Dus ik heb in het voorbeeld 3 spelers met wedstrijden eronder. Echter zijn de wedstrijden niet genesteld in de div van de speler. Toch wil ik bij het wegschrijven van de wedstrijden in de array dat deze onder de speler vallen.

Jullie enig idee hoe ik te werk moet gaan?

Groet,

Bart

Acties:
  • 0 Henk 'm!

  • WeeJeWel
  • Registratie: April 2007
  • Laatst online: 10-09 21:35
makkelijke manier: phpQuery

Homey — Critics are those without skills to create.


Acties:
  • 0 Henk 'm!

  • LPEspecial
  • Registratie: September 2004
  • Laatst online: 15-07-2024
Moeilijkere manier:
- Scan speler
- Scan wedstrijd en voeg gevonden wedstrijden toe aan laatst gevonden speler

LPEspecial


Acties:
  • 0 Henk 'm!

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
@WeeJeWel, dat lijkt best complex voor iets 'kleins'. Zijn hier voorbeelden van.. kan zo snel niet iets vinden..

@LPEspecial, hoe zou je dat 'scannen' doen?

Acties:
  • 0 Henk 'm!

Verwijderd

Is de tekst van speler ook een variable? Of staat daar altijd speler?

Acties:
  • 0 Henk 'm!

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
@JaHetIsChris Dit zijn namen van spelers, dus variabel.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
http://www.php.net/manual/en/class.domdocument.php
PHP:
1
2
3
$d = new DomDocument();
$d->LoadHTML('...'); //Of: $d->LoadHTMLFile('...')
//itereer nodes, doe je ding


Recursieve functie voor 't uitlezen van de nodes (zie comments voor een beginnetje (bijv. getArray)) et voila.

En 2 minuten testproject leverde me in een handomdraai:
Speler
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 
Speler
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 
Speler
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 
      Speelronde 1      1-1-2001      Gewonnen 

[ Voor 136% gewijzigd door RobIII op 06-08-2011 03:40 ]

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

Klopt je html code wel, ik zie 2x datum...?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 02:44:
Klopt je html code wel, ik zie 2x datum...?
Wat doet 't class attribuut er nou toe in dit voorbeeld? Het is toch sowieso weinig relevant hier? En ik neem aan dat 't gewoon een 'uit de duim gezogen voorbeeld' is met een copy/paste foutje. Het gaat TS om 't grotere geheel lijkt me.

/edit: gezien je reactie (en de vorige in dit topic) en op basis van wat psychic powers van me: Als je 't waagt met een regex op de proppen te komen dan zorg er maar voor dat je dekking hebt na je post :P

@TS: Wat je wil in pseudo-code is iets als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$result = null
$resultaten = array()

foreach (node in nodes) {
  if (node.type = speler) {
    if ($result != null)
      $resultaten.add($result)
    $result = new result();
    $result.speler = node.value;
  }
  if (($result != null) && (node.type == nummer/datum/result))
    $result.games.nummer/datum/result = node.value
}
if ($result != null)
  $resultaten.add($result)

De werkelijke implementatie (en je zult wat recursie nodig hebben of de tree eerst plat moeten slaan) is aan jezelf.

[ Voor 75% gewijzigd door RobIII op 06-08-2011 03:02 ]

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

RobIII schreef op zaterdag 06 augustus 2011 @ 02:46:
[...]

Wat doet 't class attribuut er nou toe in dit voorbeeld? Het is toch sowieso weinig relevant hier? En ik neem aan dat 't gewoon een 'uit de duim gezogen voorbeeld' is met een copy/paste foutje. Het gaat TS om 't grotere geheel lijkt me.

/edit: gezien je reactie (en de vorige in dit topic) en op basis van wat psychic powers van me: Als je 't waagt met een regex op de proppen te komen dan zorg er maar voor dat je dekking hebt na je post :P

@TS: Wat je wil in pseudo-code is iets als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$speler = null
$resultaten = array()

foreach (node in nodes) {
  if (node.type = speler) {
    if ($speler != null)
      $resultaten.add($speler)
    $speler = node.value
  }
  if (($speler != null) && (node.type == nummer/datum/result))
    $speler.game.nummer/datum/result = node.value
}
if ($speler != null)
  $resultaten.add($speler)

De werkelijke implementatie (en je zult wat recursie nodig hebben of de tree eerst plat moeten slaan) is aan jezelf.
Omdat meneer het zo lief vraagt :P

http://codedump.nl/code/723358

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:02:
[...]

Omdat meneer het zo lief vraagt :P

*snip*
Ja, daar zal 'ie 't van leren....
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
En daarbij heb ik je gewaarschuwd voor 't op de proppen komen met regexes;
http://stackoverflow.com/...ined-tags/1732454#1732454
Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.
-- Jamie Zawinski
Maar goed; was je uit de buurt van een regex gebleven dat had je ook geen behoefte gehad aan verschillende classnames (vandaar, onder andere, dat m'n psychic powers al op tilt sprongen) en had je gewoon door de DOM gelopen en je objectjes netjes gevuld.

[ Voor 30% gewijzigd door RobIII op 06-08-2011 03:07 ]

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

Ik gebruik bijna altijd regular expressions, hoezo zou je die niet moeten gebruiken?

Oke ik geef toe, hij leert niks van mijn script maar het werkt wel en het geeft hem wel de array die hij graag wilde.

Bij deze excuses als ik je geirriteerd heb (of voorheen??) met mijn regexes.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:07:
Oke ik geef toe, hij leert niks van mijn script maar het werkt wel en het geeft hem wel de array die hij graag wilde.
Het werkt, bij de gratie God's, toevallig op dit exacte voorbeeld. Verander 1 klein dingetje en je gaat op je plaat. Regexes zijn gewoon niet bedoeld voor 't parsen van HTML.
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:07:
Bij deze excuses als ik je geirriteerd heb (of voorheen??) met mijn regexes.
Je hebt me niet geïrriteerd hoor ;) :> Ik ben zo "fel" omdat je iemand een 'generally bad idea' aanleert waar dat helemaal niet nodig is en waar betere manieren voor bestaan.

En ja, er zijn uitzonderingen (voor de mierenneukers onder ons :P ), maar dan moet je wél weten waar je mee bezig bent.
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:07:
hoezo zou je die niet moeten gebruiken?
Regexen hebben zéker hun nut, maar in veel gevallen waar ze worden toegepast maken ze de code niet bepaald leesbaarder of onderhoudbaarder. Een paar rake for-lusjes of andere stukjes programlogic zijn duizenden keren leesbaarder dan:
code:
1
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Kun jij me zo vertellen (zonder te googlen) wat dit ding (halfbakken ook nog eens) doet? En hoe debug je zo'n kreng als 't er op aan komt?

[ Voor 43% gewijzigd door RobIII op 06-08-2011 03:17 ]

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

Had dat artikel gelezen!:) Volgende keer dat maar docdument-klasse gebruiken.

Mijn slapend brein zegt mij dat dat een te lange email-regex is.

Edit: Ik zie dat je de regex veranderd hebt, (dus nog even kijken). Wel moet ik zeggen dat ik geen pro ben :+

[ Voor 28% gewijzigd door Verwijderd op 06-08-2011 03:19 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:19:
Mijn slapend brein zegt mij dat dat een te lange email-regex is.
Het is inderdaad wel een regex om een emailadres te valideren (dat was nog wel een relatief simpel voorbeeld). "Te lang" is 't in ieder geval niet; daarom zei ik ook halfbakken in mijn eerdere post. Als je 't goed wil doen (voor zover dat kan met een regex, en dan is 't nog maar 90+% ofzo RFC compliant) dan valideer je een emailadres zo:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)


Dat de helft van de wereld:
code:
1
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

gebruikt (en die vaak (min-of-meer) wel voldoet) is andere koek. En dat is ook zeer waarschijnlijk de reden dat jij 'm "te lang" vindt ;) Maar als ik een email adres heb dat eindigt op .museum (ik roep maar wat) dan kan ik al niet meer inloggen/registreren/whatever op jouw site omdat je regex niet voldoet.

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

Die eerste die je poste was redelijk lang in mijn ogen, die daarna stukje korter en deze is like monster size .

Maar even eerlijk, gebruik jij echt zo een lange regex in je applicatie :D?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:24:
Maar even eerlijk, gebruik jij echt zo een lange regex in je applicatie :D?
Nee. Dat is nou net mijn hele punt. Voor 't valideren van een emailadres gebruik ik gewoon (om even bij PHP te blijven) iets als:
PHP:
1
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

(Of andere beschikbare functies uit 't platform/taal waar ik op dat moment in werk).
Mijn hele punt is: als je 't goed wil doen kun je iets simpels als een emailadres al niet valideren met een regex. Je oplossing die je postte werkt vast (heb 't niet getest) maar een regex is hier gewoon niet "de right tool for the right job". De "right tool for the right job" is hier, in het geval van 't probleem van de TS, dus een DomDocument (of andere creatieve oplossingen). Zoals ik eerder aangaf: Regexen + HTML is 99 v.d. 100 keer een slecht idee. Er zijn uitzonderingen ja.

[ Voor 9% gewijzigd door RobIII op 06-08-2011 03:36 ]

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

Damn dit is wel erg laam, moet die functie onthouden, Ben hem namelijk nooit eerder tegen gekomen.

Very handy O-)

Om niet nog een off-topic reply te maken:

Yep had al gezien dat die functie sinds php 5.2 erin zit. Net ook nog even naar de andere mogelijke filters gekeken.

[ Voor 49% gewijzigd door Verwijderd op 06-08-2011 03:31 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 06 augustus 2011 @ 03:29:
Damn dit is wel erg laam, moet die functie onthouden, Ben hem namelijk nooit eerder tegen gekomen.
(PHP 5 >= 5.2.0)
Maar goed; kunnen we nu weer ontopic? ;)

offtopic:
Je code geeft overigens een zut notices:
Strict Standards: Only variables should be passed by reference ... on line 38

[ Voor 18% gewijzigd door RobIII op 06-08-2011 03:43 ]

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!

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
Hahah mooie discussie! Ik moet eerlijk zeggen, ik was ook bezig met regex. Het is inderdaad een kriem zodra er iets wordt gewijzigd.

Ik ga eens kijken naar de tip van Roblll!

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

offtopic:
* Creepy kijkt nog eens naar z'n sig :Y) . En e-mail validatie qua formaat... damn, hoeveel foutieve oplossingen er wel niet zijn. Die "te lange" van Rob is al niet goed geneog, die heeeeeele lange wel, en die "kortere" levert echt te veel adressen op die foutief worden gerekend maar wel goed zijn. Ik heb zelfs bij verschillende (!) ESP's e-mail adressen zien worden geblokt die compleet valide waren, waarbij je bijna zeker weet dat een verkeerde reg-exp is gebruikt ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
Hi All,

Ik ben wat aan het stoeien geweest met het een en ander. Ik kom er toch niet helemaal uit.. helaas. Kunnen jullie mij verder helpen? Vooral het 'Speler'-probleem is bij mij problematisch.

Ik gebruik PHP Simple HTML DOM Parser, vooral omdat ik hoopte dat dit wat eenvoudiger werkt. En op zich werkt het prettig.

Ik heb nu hetvolgende:

PHP:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?

include('simplehtmldom/simple_html_dom.php');

$html = str_get_html('<div class="container">
 <div class="player">Speler</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 2 </div>
      <div class="datum">1-2-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 3 </div>
      <div class="datum">1-3-2001 </div>
      <div class="result">Gewonnen </div>
   </div>

 <div class="player">Speler 2</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 2 </div>
      <div class="datum">1-2-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 3 </div>
      <div class="datum">1-3-2001 </div>
      <div class="result">Gewonnen </div>
   </div>

 <div class="player">Speler 3</div>

   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 1 </div>
      <div class="datum">1-1-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 2 </div>
      <div class="datum">1-2-2001 </div>
      <div class="result">Gewonnen </div>
   </div>


   <div class="wedstrijd"> 
      <div class="nummer">Speelronde 3 </div>
      <div class="datum">1-3-2001 </div>
      <div class="result">Gewonnen </div>
   </div>

</div>');


foreach($html->find('div.container') as $container) 
{
       foreach($container->find('div.player') as $player) 
       {
             
            $item['player'] = $player->find('div.player', 0)->plaintext;
             
                foreach($container->find('div.wedstrijd') as $game) 
                {

                    $item['nummer'] = $game->find('div.nummer', 0)->plaintext;
                    $item['datum']  = $game->find('div.datum', 0)->plaintext;
                    $item['result'] = $game->find('div.result', 0)->plaintext;

                    $games[] = $item;
                    
                }

       }
}


print_r($games);


?>


Het resultaat is helaas niet zoals gehoopt. Ik krijg 27 resultaten terug. Hij loopt 3 keer door de wedstrijden heen. Dit waarschijnlijk om dat hij per 'player' de wedstrijden toont. Eigenlijk zou hij per speler alleen de wedstrijden moeten loopen tot de volgende 'player'-div. Hoe ga ik dit voor elkaar krijgen :S

Dit is het resutlaat:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
Array
(
    [0] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [1] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [2] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [3] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [4] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [5] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [6] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [7] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [8] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [9] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [10] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [11] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [12] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [13] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [14] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [15] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [16] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [17] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [18] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [19] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [20] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [21] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [22] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [23] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
    [24] => Array
        (
            [player] => 
            [nummer] => Speelronde 1 
            [datum] => 1-1-2001 
            [result] => Gewonnen 
        )
 
    [25] => Array
        (
            [player] => 
            [nummer] => Speelronde 2 
            [datum] => 1-2-2001 
            [result] => Gewonnen 
        )
 
    [26] => Array
        (
            [player] => 
            [nummer] => Speelronde 3 
            [datum] => 1-3-2001 
            [result] => Gewonnen 
        )
 
)

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

bdu schreef op donderdag 11 augustus 2011 @ 17:54:
Het resultaat is helaas niet zoals gehoopt. Ik krijg 27 resultaten terug. Hij loopt 3 keer door de wedstrijden heen. Dit waarschijnlijk om dat hij per 'player' de wedstrijden toont. Eigenlijk zou hij per speler alleen de wedstrijden moeten loopen tot de volgende 'player'-div. Hoe ga ik dit voor elkaar krijgen :S
Aangezien de website "jQuery selector" support aangeeft (wat eigenlijk gewoon CSS selectoren zijn overigens), kun je daar wellicht wat mee doen. Wanneer je een speler tegenkomt sla je dit op als laatste speler. En bij een wedstrijd vraag je vervolgens de laatste speler op. Een voorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
foreach($html->find('div.container > div') as $div)
{
    if($div->class == "") // geen class, dus een speler
    {
        $lastPlayer = $html->plainText;
    }
    else if($div->class == "wedstrijd")
    {
        $games[$lastPlayer]['nummer'] = $div->find('div.nummer', 0)->plaintext; 
        // ...
    }
}


offtopic:
Let erop dat je nu twee schrijftalen door elkaar gebruikt, wat in het algemeen wordt afgeraden.

[ Voor 7% gewijzigd door Feanathiel op 11-08-2011 18:42 . Reden: speler had geen class, dus codevoorbeeld vanaf nu ook niet meer ]


  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
@Feanathiel

Thanks. Als ik de verschillende gegevens echo dan krijg ik wat ik wil hebben. Helemaal super! Alleen krijg het geheel niet in een Array. Er gaat iets mis..

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
foreach($html->find('div.container > div') as $div) 
{ 
    if($div->class == "player") // player class, dus een speler 
    { 
        $lastPlayer = $html->plainText; 
    } 
    else if($div->class == "wedstrijd") 
    { 
        $games[$lastPlayer]['nummer'] = $div->find('div.nummer', 0)->plaintext;
        $games[$lastPlayer]['datum']  = $div->find('div.datum', 0)->plaintext;
        $games[$lastPlayer]['result'] = $div->find('div.result', 0)->plaintext;
        
        $gamesArray[] = $games;
    } 
} 

print_r($games);


ps. De Speler heeft wel een class trouwens.

[edit] Hmmz. ik was "$gamesArray[] = $games;" vergeten.

Hij pakt alleen de Speler niet mee in de array :S

[ Voor 8% gewijzigd door bdu op 11-08-2011 19:32 ]


  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Als je error reporting aan hebt staan zou het toch wel duidelijk moeten worden.

Ik gok dat het hier aan ligt: plainText

[ Voor 63% gewijzigd door 8088 op 11-08-2011 19:57 ]

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Er gaat iets mis..
Eeehhh... tuurlijk. Kan je iets specifieker zijn? Als het een foutmelding van PHP betreft: lees hem eens en kijk eens wat je zelf kan doen om dat te voorkomen ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
Haha.. Klopt. Sorry.

Ik krijg geen foutmelding. Maar de array vult zich niet helemaal juist. Omdat de Spelers voor 3 wedstrijden gelijk zijn zet hij deze in 1 Array bij elkaar?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
foreach($html->find('div.container > div') as $div)  
{  
    if($div->class == "player") // player class, dus een speler  
    {  
        $lastPlayer = $html->plaintext;  
    }  
    else if($div->class == "wedstrijd")  
    {  
        $games[$lastPlayer]['nummer'] = $div->find('div.nummer', 0)->plaintext; 
        $games[$lastPlayer]['datum']  = $div->find('div.datum', 0)->plaintext; 
        $games[$lastPlayer]['result'] = $div->find('div.result', 0)->plaintext; 
         
        $gamesArray[] = $games; 
    }  
}  

print_r($gamesArray);


Geeft het volgende resultaat

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Array
(
    [0] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 1 
                    [datum] => 1-1-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [1] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 2 
                    [datum] => 1-2-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [2] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 3 
                    [datum] => 1-3-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [3] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 1 
                    [datum] => 1-1-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [4] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 2 
                    [datum] => 1-2-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [5] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 3 
                    [datum] => 1-3-2001 
                    [result] => Gewonnen 
                )
 
        )
 
    [6] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 1a 
                    [datum] => 1-1-2011 
                    [result] => Gewonnen 
                )
 
        )
 
    [7] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 2b 
                    [datum] => 1-2-2012 
                    [result] => Gewonnen 
                )
 
        )
 
    [8] => Array
        (
            [   Sjoerd                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Bart 2                Speelronde 1         1-1-2001         Gewonnen                        Speelronde 2         1-2-2001         Gewonnen                        Speelronde 3         1-3-2001         Gewonnen           Rob 3                Speelronde 1a         1-1-2011         Gewonnen                        Speelronde 2b         1-2-2012         Gewonnen                        Speelronde 3c         1-3-2013         Gewonnen          ] => Array
                (
                    [nummer] => Speelronde 3c 
                    [datum] => 1-3-2013 
                    [result] => Gewonnen 
                )
 
        )
 
)

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Die had je wel moeten krijgen bij je vorige voorbeeld. Mits error reporting aanstaat natuurlijk, anders blijft het gokken.
Omdat de Spelers voor 3 wedstrijden gelijk zijn zet hij deze in 1 Array bij elkaar?
Gebruik je nu weer andere data dan in je vorige voorbeelden? Dan wordt het lastig volgen voor ons. Maar begin eens met debuggen: echo de waarden in je loops en je ziet vanzelf wat er gebeurt. En een iets kleinere dataset voorkomt onnodig veel scrollen.

[ Voor 5% gewijzigd door 8088 op 11-08-2011 21:00 ]

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • bdu
  • Registratie: Februari 2002
  • Laatst online: 20-09 21:33
Klopt, ik heb de inhoud een beetje aangepast zodat het onderscheid tussen de verschillende records wat duidelijker is.

Met echo zie ik dat alles onder 1 speler in de array wordt gestopt. Uiteraard omdat de naam hetzelfde is. Ik ben iig al stukje verder, alleen de array even fixen.

Bedankt.

[edit] Heb nu wat ik wilde :-)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foreach($html->find('div.container > div') as $div)  
{  
    if($div->class == "player") // player class, dus een speler  
    {  
        $lastPlayer = $div->plaintext;  
    }  
    else if($div->class == "wedstrijd")  
    {  

    $nummer = $games[$lastPlayer]['nummer'] = $div->find('div.nummer', 0)->plaintext; 
        $datum = $games[$lastPlayer]['datum']  = $div->find('div.datum', 0)->plaintext; 
        $result = $games[$lastPlayer]['result'] = $div->find('div.result', 0)->plaintext;

        $gamesArray[$lastPlayer][] =  array("nummer" => $nummer, "datum" => $datum, "result" => $result);
     
    }  
}  

echo "<br><br> Array: <br><br>";
print_r($gamesArray);


Zat nog een foutje in " $lastPlayer = $div->plaintext; " $div ipv $html.

Bedankt!

[ Voor 87% gewijzigd door bdu op 13-08-2011 16:38 ]

Pagina: 1