[php] Rijen uit tabel halen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
Een simpele probleem waar ik nog niet helemaal uit ben gekomen.

Je laadt gewoon een pagina met HTML in. Deze bevat wel veel zooi zoals:
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
<table x:str border=3D0 cellpadding=3D0 cellspacing=3D0 width=3D1141 =
style=3D'border-collapse:
 collapse;table-layout:fixed;width:856pt'>
 <col width=3D80 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:2925;
 width:60pt'>
 <col width=3D271 =
style=3D'mso-width-source:userset;mso-width-alt:9910;width:203pt'>
 <col width=3D94 =
style=3D'mso-width-source:userset;mso-width-alt:3437;width:71pt'>
 <col width=3D121 =
style=3D'mso-width-source:userset;mso-width-alt:4425;width:91pt'>
 <col width=3D95 =
style=3D'mso-width-source:userset;mso-width-alt:3474;width:71pt'>
 <col class=3Dxl31 width=3D136 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:
 4973;width:102pt'>
 <col width=3D64 span=3D2 style=3D'width:48pt'>
 <tr height=3D18 style=3D'height:13.5pt'>
  <td height=3D18 class=3Dxl24 id=3D"_x0000_s1025" x:autofilter=3D"all"
  x:autofilterrange=3D"$A$1:$H$1103" width=3D80 =
style=3D'height:13.5pt;width:60pt'>Article</td>
  <td class=3Dxl27 id=3D"_x0000_s1037" x:autofilter=3D"all" width=3D80
  style=3D'width:60pt'>ticle</td>
  <td class=3Dxl24 id=3D"_x0000_s1026" x:autofilter=3D"all" width=3D271
  style=3D'width:203pt'>Description</td>
  <td class=3Dxl24 id=3D"_x0000_s1028" x:autofilter=3D"all" width=3D94
  style=3D'width:71pt'>decr</td>
  <td class=3Dxl27 id=3D"_x0000_s1035" x:autofilter=3D"all" width=3D121
  style=3D'width:91pt'>free stock</td>
  <td class=3Dxl27 id=3D"_x0000_s1027" x:autofilter=3D"all" width=3D95
  style=3D'width:71pt'>ind price</td>
  <td class=3Dxl32 id=3D"_x0000_s1032" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Best offer price</td>
  <td class=3Dxl32 id=3D"_x0000_s1031" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Total Euro</td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
 </tr>

(ignore php begin/einde omdat er geen [html] code view bestaat :/)

Het is dus uit Excel geexporteerd.
Het is bedoeling dat ik hieruit rijen kan halen en vervolgens nog een keer <td></td> velden eruit halen. Daarna wordt in de dezelfde rij imagelink opgezocht dat http://......jpg bevat. Dan ben ik klaar.

De eerste poging om rijen eruit te filteren lukt niet goed.

Ik deed het met:
PHP:
1
2
3
4
5
6
7
8
9
10
// read file
$filename="lijst.html";
$handle=fopen($filename,"r");
$contents = fread ($handle, filesize($filename));
fclose ($handle);

// remove newlines
$contents2=preg_replace('@([\r\n])[\s]+@','',$contents);
// rijen eruit expressies
$result=preg_match_all('/<tr .*>(.*)<\/tr>/i',$contents2,$matches,PREG_SET_ORDER);

Meer heb ik niet, maar dat komt ook omdat ik niet verder kan nu de rijen eruit halen niet goed gaat.
Hij ziet begin <tr... wel, maar hij mist veel </tr><tr .... tussendoor, wat niet goed is. Pas aan het eind van $content2 ziet ie pas wel weer laatste </tr> tegen. Ertussen is dus overgeslagen.

Ik heb dus diverse zoek patterns geprobeerd, maar ik kom nog lang niet in buurt van gewenste resultaat.
Alleen met:
PHP:
1
$result=preg_match_all('/<tr/i',$contents2,$matches,PREG_SET_ORDER);

ziet hij wel meer beginnende tr's.

PHP:
1
$result=preg_match_all('/<tr .*>/i',$contents2,$matches,PREG_SET_ORDER);

ziet ie echter niet meer goed en pakt teveel mee en gaat over </tr><td ...>, wat ik niet moet hebben.

Welke idee heb je dus voor mijn probleem? Ook in het begin met ^ en einde met $ werkt niet, ook \A en \z lijken niet goed te werken. Ze zouden begin en einde zoekstring moeten aangeven.
Door preg_replace is het dus 1 groot doorlopende string geworden, want newlines waar met '.' ermee stopt zijn eruit gehaald.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

1: html bestaat wel,
code:
1
[code=html][/code]

2: ik zie geen http:// links in je doc?

Overigens, moet je het ZO exporteren, kan je het niet beter exporteren naar csv? Dat is makkelijker in te lezen, en kan je ook nog selecteren wat je moet hebben.

Of exotischer: XML

[ Voor 64% gewijzigd door Snake op 07-02-2007 11:52 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

(ignore php begin/einde omdat er geen [html] code view bestaat :/)
En waarom werkt dit wel:?

HTML:
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
<table x:str border=3D0 cellpadding=3D0 cellspacing=3D0 width=3D1141 =
style=3D'border-collapse:
 collapse;table-layout:fixed;width:856pt'>
 <col width=3D80 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:2925;
 width:60pt'>
 <col width=3D271 =
style=3D'mso-width-source:userset;mso-width-alt:9910;width:203pt'>
 <col width=3D94 =
style=3D'mso-width-source:userset;mso-width-alt:3437;width:71pt'>
 <col width=3D121 =
style=3D'mso-width-source:userset;mso-width-alt:4425;width:91pt'>
 <col width=3D95 =
style=3D'mso-width-source:userset;mso-width-alt:3474;width:71pt'>
 <col class=3Dxl31 width=3D136 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:
 4973;width:102pt'>
 <col width=3D64 span=3D2 style=3D'width:48pt'>
 <tr height=3D18 style=3D'height:13.5pt'>
  <td height=3D18 class=3Dxl24 id=3D"_x0000_s1025" x:autofilter=3D"all"
  x:autofilterrange=3D"$A$1:$H$1103" width=3D80 =
style=3D'height:13.5pt;width:60pt'>Article</td>
  <td class=3Dxl27 id=3D"_x0000_s1037" x:autofilter=3D"all" width=3D80
  style=3D'width:60pt'>ticle</td>
  <td class=3Dxl24 id=3D"_x0000_s1026" x:autofilter=3D"all" width=3D271
  style=3D'width:203pt'>Description</td>
  <td class=3Dxl24 id=3D"_x0000_s1028" x:autofilter=3D"all" width=3D94
  style=3D'width:71pt'>decr</td>
  <td class=3Dxl27 id=3D"_x0000_s1035" x:autofilter=3D"all" width=3D121
  style=3D'width:91pt'>free stock</td>
  <td class=3Dxl27 id=3D"_x0000_s1027" x:autofilter=3D"all" width=3D95
  style=3D'width:71pt'>ind price</td>
  <td class=3Dxl32 id=3D"_x0000_s1032" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Best offer price</td>
  <td class=3Dxl32 id=3D"_x0000_s1031" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Total Euro</td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
 </tr>

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom doe je dat niet in eerste instantie met javascript? Die ondersteunt het herkennen van rijen, cellen e.d. Vervolgens zou je je php ding kunnen doen via Ajax ofzo. Ben geen javascript kenner, maar denk dat er een vergelijkbare functie is om de totale html bron in te lezen van een externe bron (neem aan dat je een soort miner aan het maken bent ofzo)

edit:
Kan je html source eigenlijk beschouwen als xml?? anders zou de simple XML class nog wel wat voor je kunnen betekenen!

[ Voor 16% gewijzigd door Verwijderd op 07-02-2007 11:52 ]


Acties:
  • 0 Henk 'm!

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
Ik kan je met je reg.expressies niet echt helpen, maar is het niet mogelijk (lees: handiger..) om alles te saven als csv ipv html in excel?

Acties:
  • 0 Henk 'm!

Verwijderd

Ohja het komt uit excel... misschien een idee om daar xml uit te laten halen. Deze is vervolgens vrij eenvoudig te parsen mbv simpleXMLReader class.

Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 14:02
Wat dacht je trouwens hiervan om je file te openen:
PHP:
1
$contents2 = implode('', file("lijst.html"));

Scheelt je acht regels code en een regexp :)

Acties:
  • 0 Henk 'm!

  • evolnick
  • Registratie: Januari 2006
  • Laatst online: 04-06-2024
je hebt ook een php excel reader:

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Als je het in javascript doet, dan kan je misschien wat code pikken van de fckeditor. Deze heeft functionaliteit om alle zooi uit een door microsoft gegenereerde html te halen....en wellicht is dit gemakkelijk over te zetten naar php.

Edit: wellicht wat offtopic omdat de TS de inhoud van de tabel wil hebben, en niet zozeer een opgeschoonde tabel

[ Voor 19% gewijzigd door KabouterSuper op 07-02-2007 12:16 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
Ik kan niet meer opnieuw maken, de excel zootje is van client naar me gemaild. Dus ik wil even proberen hiermee worstelen :) Als het kan :)

Ik hoef alleen:
- rijen opsporen en apart zetten
- in gevonden rijen haal ik data uit <td...></td>.
- vervolgens wordt in rijen http links opgezocht (paar zit niet in href...) Het zijn allemaal imagelinks.

Met gevonden gegevens bouw ik dan nette html pagina op, http links worden gewoon erin gezet als img src zodat plaatjes meteen zichtbaar worden. De pagina kan ik dan gewoon afdrukken en geef ik aan mijn ouders.... Dat klusje moet ik proberen doen.

[ Voor 62% gewijzigd door MrDummy op 07-02-2007 12:28 ]


Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 20-09 21:30

Pyrus

Hardknock life

iets in deze richting, niet?:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// read file
$filename="lijst.html";
$handle=fopen($filename,"r");
$contents = fread ($handle, filesize($filename));
fclose ($handle); 
$contents=implode("",$contents);

preg_match_all("#<tr.*>(.*)</tr>#Ui", $contents, $rijen);
foreach($rijen[0] as $rij)
{
  preg_match_all("#<td.*>(.*)</td>#Ui",$rij,$cellen);
  foreach($cellen[0] as $cel)
  {
   //doe iets met je cel
  }
}

LinkedIn


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
Dat is met # # en niet met / / :o

Wat doet / / eigenlijk? Verder is er ook % % en @ @. Wat doen ze eigenlijk?

Even kijken of het werkt :)

Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
BtM909 schreef op woensdag 07 februari 2007 @ 11:51:
[...]
En waarom werkt dit wel:?

codeblaat
Ah, omdat:
[code]
PHP:
1

meteen werkt, dacht ik dat
[html] [/html] ook zo gaat, maar nee....

Nu zie ik dat je
HTML:
1
 doet.


Zal ik onthouden voor volgende keer.
Hmm... parsing script is in de war. Hier zou eerste [code] voorrang moet krijgen, maar php en code gooien even roet in eten :o Het blijkt pas te kijken naar laatste code tag, of ik moet anders intikken.

Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 20-09 21:30

Pyrus

Hardknock life

MrDummy schreef op woensdag 07 februari 2007 @ 12:30:
Dat is met # # en niet met / / :o

Wat doet / / eigenlijk? Verder is er ook % % en @ @. Wat doen ze eigenlijk?

Even kijken of het werkt :)
voor delimiters kun je willekeurige tekens gebruiken zo ongeveer, ik gebruik hier # omdat er verderop een / komt en ik wil voorkomen dat ik vergeet die te escapen. Tevens gemakkelijker om te lezen, niet ge-escapete tekens :)

[ Voor 36% gewijzigd door Pyrus op 07-02-2007 12:39 ]

LinkedIn


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
De code lijkt niet te werken. Maar ik heb voor jullie voorbeeldcode, zodat jullie beter mee kunnen doen wat wel en niet werkt met bepaalde patterns.
Hij doet het toch wel nadat ik strings goed heb gezet. 8)7 Ik ga verder uitwerken met de laatste codevoorbeeld.

HTML:
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
<table x:str border=3D0 cellpadding=3D0 cellspacing=3D0 width=3D1141 =
style=3D'border-collapse:
 collapse;table-layout:fixed;width:856pt'>
 <col width=3D80 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:2925;
 width:60pt'>
 <col width=3D271 =
style=3D'mso-width-source:userset;mso-width-alt:9910;width:203pt'>
 <col width=3D94 =
style=3D'mso-width-source:userset;mso-width-alt:3437;width:71pt'>
 <col width=3D121 =
style=3D'mso-width-source:userset;mso-width-alt:4425;width:91pt'>
 <col width=3D95 =
style=3D'mso-width-source:userset;mso-width-alt:3474;width:71pt'>
 <col class=3Dxl31 width=3D136 span=3D2 =
style=3D'mso-width-source:userset;mso-width-alt:
 4973;width:102pt'>
 <col width=3D64 span=3D2 style=3D'width:48pt'>
 <tr height=3D18 style=3D'height:13.5pt'>
  <td height=3D18 class=3Dxl24 id=3D"_x0000_s1025" x:autofilter=3D"all"
  x:autofilterrange=3D"$A$1:$H$1103" width=3D80 =
style=3D'height:13.5pt;width:60pt'>Article</td>
  <td class=3Dxl27 id=3D"_x0000_s1037" x:autofilter=3D"all" width=3D80
  style=3D'width:60pt'>ticle</td>
  <td class=3Dxl24 id=3D"_x0000_s1026" x:autofilter=3D"all" width=3D271
  style=3D'width:203pt'>Description</td>
  <td class=3Dxl24 id=3D"_x0000_s1028" x:autofilter=3D"all" width=3D94
  style=3D'width:71pt'>decr</td>
  <td class=3Dxl27 id=3D"_x0000_s1035" x:autofilter=3D"all" width=3D121
  style=3D'width:91pt'>free stock</td>
  <td class=3Dxl27 id=3D"_x0000_s1027" x:autofilter=3D"all" width=3D95
  style=3D'width:71pt'>ind price</td>
  <td class=3Dxl32 id=3D"_x0000_s1032" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Best offer price</td>
  <td class=3Dxl32 id=3D"_x0000_s1031" x:autofilter=3D"all" width=3D136
  style=3D'width:102pt'>Total Euro</td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
  <td class=3Dxl15 width=3D64 style=3D'width:48pt'></td>
 </tr>
 <tr height=3D17 style=3D'height:12.75pt'>
  <td height=3D17 class=3Dxl25 align=3Dright style=3D'height:12.75pt' =
x:num>19009103</td>
  <td class=3Dxl30>009103</td>
  <td class=3Dxl25>Blaat1</td>
  <td class=3Dxl25>concept disc</td>
  <td class=3Dxl15 align=3Dright x:num>700</td>
  <td class=3Dxl15 align=3Dright x:num=3D"0.15">0,8</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"8.5499999999999993E-2">0,9</td>
  <td class=3Dxl31 align=3Dright x:num=3D"19.151999999999997">8</td>
  <td class=3Dxl28 colspan=3D2 style=3D'mso-ignore:colspan'
  =
x:fmla=3D"=3DHYPERLINK(&quot;http://www.secret.com/pro=
ducts/&quot;&amp;B2&amp;&quot;_EX.jpg&quot;,B2&amp;&quot;.jpg&quot;)"><a
  =
href=3D"http://www.secret.com/products/009103_EX.jpg">=
009103.jpg</a></td>
 </tr>
 <tr height=3D17 style=3D'height:12.75pt'>
  <td height=3D17 class=3Dxl25 align=3Dright style=3D'height:12.75pt' =
x:num>19009107</td>
  <td class=3Dxl30>009107</td>
  <td class=3Dxl25>Blaat2</td>
  <td class=3Dxl25>concept disc</td>
  <td class=3Dxl15 align=3Dright x:num>700</td>
  <td class=3Dxl15 align=3Dright x:num=3D"0.15">0,8</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"8.5499999999999993E-2">0,9</td>
  <td class=3Dxl31 align=3Dright x:num=3D"257.0985">8</td>
  <td class=3Dxl28 colspan=3D2 style=3D'mso-ignore:colspan'
  =
x:fmla=3D"=3DHYPERLINK(&quot;http://www.secret.com/pro=
ducts/&quot;&amp;B3&amp;&quot;_EX.jpg&quot;,B3&amp;&quot;.jpg&quot;)"><a
  =
href=3D"http://www.secret.com/products/009107_EX.jpg">=
009107.jpg</a></td>
 </tr>
 <tr height=3D17 style=3D'height:12.75pt'>
  <td height=3D17 class=3Dxl25 align=3Dright style=3D'height:12.75pt' =
x:num>19009109</td>
  <td class=3Dxl30>009109</td>
  <td class=3Dxl25>Blaat3</td>
  <td class=3Dxl25>concept disc</td>
  <td class=3Dxl15 align=3Dright x:num>700</td>
  <td class=3Dxl15 align=3Dright x:num=3D"0.15">0,8</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"8.5499999999999993E-2">0,9</td>
  <td class=3Dxl31 align=3Dright x:num=3D"18.040499999999998">8</td>
  <td class=3Dxl28 colspan=3D2 style=3D'mso-ignore:colspan'
  =
x:fmla=3D"=3DHYPERLINK(&quot;http://www.secret.com/pro=
ducts/&quot;&amp;B4&amp;&quot;_EX.jpg&quot;,B4&amp;&quot;.jpg&quot;)"><a
  =
href=3D"http://www.secret.com/products/009109_EX.jpg">=
009109.jpg</a></td>
 </tr>
 <tr height=3D17 style=3D'height:12.75pt'>
  <td height=3D17 class=3Dxl25 align=3Dright style=3D'height:12.75pt' =
x:num>19009123</td>
  <td class=3Dxl30>009123</td>
  <td class=3Dxl25>Blaat4</td>
  <td class=3Dxl25>concept disc</td>
  <td class=3Dxl15 align=3Dright x:num>700</td>
  <td class=3Dxl15 align=3Dright x:num=3D"0.15">0,8</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"8.5499999999999993E-2">0,9</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"444.25799999999998">8</td>
  <td class=3Dxl28 colspan=3D2 style=3D'mso-ignore:colspan'
  =
x:fmla=3D"=3DHYPERLINK(&quot;http://www.secret.com/pro=
ducts/&quot;&amp;B5&amp;&quot;_EX.jpg&quot;,B5&amp;&quot;.jpg&quot;)"><a
  =
href=3D"http://www.secret.com/products/009123_EX.jpg">=
009123.jpg</a></td>
 </tr>
 <tr height=3D17 style=3D'height:12.75pt'>
  <td height=3D17 class=3Dxl25 align=3Dright style=3D'height:12.75pt' =
x:num>19009127</td>
  <td class=3Dxl30>009127</td>
  <td class=3Dxl25>Blaat5</td>
  <td class=3Dxl25>concept disc</td>
  <td class=3Dxl15 align=3Dright x:num>700</td>
  <td class=3Dxl15 align=3Dright x:num=3D"0.15">0,8</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"8.5499999999999993E-2">0,9</td>
  <td class=3Dxl31 align=3Dright =
x:num=3D"859.53149999999994">8</td>
  <td class=3Dxl28 colspan=3D2 style=3D'mso-ignore:colspan'
  =
x:fmla=3D"=3DHYPERLINK(&quot;http://www.secret.com/pro=
ducts/&quot;&amp;B6&amp;&quot;_EX.jpg&quot;,B6&amp;&quot;.jpg&quot;)"><a
  =
href=3D"http://www.secret.com/products/009127_EX.jpg">=
009127.jpg</a></td>
 </tr>
</table>


Hiermee kun je wat experimenteren wat werkt en niet werkt. Er is ook groot blok code ervoor, maar we gaan alleen voor tabel deel. Plaats deze in lijst.html en try maar voor jezelf :) Ik heb wat data veranderd om bedrijfsredenen. Dus data eruit halen en klaarzetten om schone html pagina's te bouwen, met andere layout uiteraard.
Lekkere Excel rommel he... :o

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

MrDummy schreef op woensdag 07 februari 2007 @ 12:58:
De code lijkt niet te werken. Maar ik heb voor jullie voorbeeldcode, zodat jullie beter mee kunnen doen wat wel en niet werkt met bepaalde patterns.
Hij doet het toch wel nadat ik strings goed heb gezet. 8)7 Ik ga verder uitwerken met de laatste codevoorbeeld.
...

Hiermee kun je wat experimenteren wat werkt en niet werkt.
Eeh, probeer dat eerst aub even zelf voordat je dat hier post. We zijn er hier niet natuurlijk om zaken voor je uit te proberen en te debuggen. We verwachten van je dat je dat in eerste instantie zelf doet.
Er is ook groot blok code ervoor, maar we gaan alleen voor tabel deel. Plaats deze in lijst.html en try maar voor jezelf :)
Precies, probeer het eerst zelf ;)
Ik heb wat data veranderd om bedrijfsredenen. Dus data eruit halen en klaarzetten om schone html pagina's te bouwen, met andere layout uiteraard.
Lekkere Excel rommel he... :o
Het verbaast me dat je een HTML export vanuit Excel wilt inlezen terwijl vanuit Excel zoveel makkelijker te lezen formaten zijn. (TAB gescheiden, CSV, XML o.a.). Je kan altijd de klant je het Excel document laten sturen.

"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


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
MrDummy schreef op woensdag 07 februari 2007 @ 11:47:
Een simpele probleem waar ik nog niet helemaal uit ben gekomen.

[ ... ]

De eerste poging om rijen eruit te filteren lukt niet goed.

Ik deed het met:
code:
1
2
3
[ ... ]
// rijen eruit expressies
$result=preg_match_all('/<tr .*>(.*)<\/tr>/i',$contents2,$matches,PREG_SET_ORDER);

Meer heb ik niet, maar dat komt ook omdat ik niet verder kan nu de rijen eruit halen niet goed gaat.
Hij ziet begin <tr... wel, maar hij mist veel </tr><tr .... tussendoor, wat niet goed is. Pas aan het eind van $content2 ziet ie pas wel weer laatste </tr> tegen. Ertussen is dus overgeslagen.

Ik heb dus diverse zoek patterns geprobeerd, maar ik kom nog lang niet in buurt van gewenste resultaat.
[ ... ]
Reguliere expressies zijn greedy, dwz dat ze zoveel mogelijk matchen. In dit geval is dat
code:
1
(.*)
. De .* matcht ook de tussenliggende </tr>'en. Om deze RE non-greedy te maken, kun je een ? toevoegen:
code:
1
/<tr\b[^>]*>(.*?)<\/tr>/
Pagina: 1