strip
Ik ben bezig met een toto script en als extra'tje lijkt het me leuk om alle voorgaande duels van teams te laten tonen bij de statistieken van een wedstrijd. Aangezien ik een html bestand met daarin alle gespeelde wedstrijden in de eredivisie heb, maar ik ze nog niet in de database heb wil ik vragen of iemand weet hoe ik de gegevens netjes in een array krijg?
Waarschijnlijk moet ik met strip werken ofzo? Ik weet niet precies hoe kan iemand me misschien helpen?
Het in de database krijgen is het probleem eigenlijk niet. Ik wil eigenlijk weten hoe ik het in een nette array krijg?
het html bestand ziet er zo uit:
<tr><td>2006-2007</td>
<td>2006-09-10</td>
<td>NEC</td>
<td>AZ</td>
<td>0</td>
<td>2</td>
</tr>
<tr><td>2006-2007</td>
<td>2006-09-10</td>
<td>Sparta Rotterdam</td>
<td>Feyenoord</td>
<td>1</td>
<td>4</td>
</tr>
enzovoort..
Ik wil de volgende gegevens graag in een array hebben:
- seizoen
- datum
- thuisTeam
- uitTeam
- thuisScore
- uitScore
Anders moet je alles eruit halen tussen <td> en </td>, met de daarvoor bestemde functies.
Tussen haakjes, ik ken strip alleen als Donald Duck. Wat is strip? :)
Ik dacht dat de functie 'strip' heette.. maar ik kan me vergissen? Hoe kan ik het er wel tussen uit krijgen?
explode misschien iets kunnen maken, maar ik weet eigenlijk niet of er andere functies voor zijn die makkelijker zijn. Denk haast van wel.
Maar niet om het een of ander: het is netter als je die waarden in de database stopt zonder de html-tags <td> en </td>, zodat je ze net zo in de database krijgt als in je array. Als je het dan uit de database haalt, kan je de tags er weer omheen zetten.
Je zal met Maar niet om het een of ander: het is netter als je die waarden in de database stopt zonder de html-tags <td> en </td>, zodat je ze net zo in de database krijgt als in je array. Als je het dan uit de database haalt, kan je de tags er weer omheen zetten.
Kasper:
Maar niet om het een of ander: het is netter als je die waarden in de database stopt zonder de html-tags <td> en </td>, zodat je ze net zo in de database krijgt als in je array. Als je het dan uit de database haalt, kan je de tags er weer omheen zetten.
Dat is ook wat ik wil.. Eerst alles filteren (dus de <td> en <tr> weg halen en dan alles in aparte variabele zetten. En tenslot dan alles toevoegen aan de database
- seizoen
- datum
- thuisTeam
- uitTeam
- thuisScore
- uitScore
hoe kan ik deze gegevens per regel verkrijgen?
<tr><td>2006-2007</td>
<td>2006-09-10</td>
<td>NEC</td>
<td>AZ</td>
<td>0</td>
<td>2</td>
</tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td> <td>0</td><td>2</td></tr>
alles achter elkaar dus..
En dan staat er ook nog een hoop html vóór en áchter?
<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>
wel begint elke <tr> netjes op een nieuwe regel
Gewijzigd op 01/01/1970 01:00:00 door Tim E
Code (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
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
Array
(
[0] => Array
(
[0] => 2006-20072006-09-10AjaxVitesse30
[1] => 2006-20072006-09-10FC GroningenHeracles Almelo21
[2] => 2006-20072006-09-10FC UtrechtRKC Waalwijk50
[3] => 2006-20072006-09-10NECAZ02
[4] => 2006-20072006-09-10Sparta RotterdamFeyenoord14
)
[1] => Array
(
[0] => 2006-2007
[1] => 2006-2007
[2] => 2006-2007
[3] => 2006-2007
[4] => 2006-2007
)
[2] => Array
(
[0] => 2006-09-10
[1] => 2006-09-10
[2] => 2006-09-10
[3] => 2006-09-10
[4] => 2006-09-10
)
[3] => Array
(
[0] => Ajax
[1] => FC Groningen
[2] => FC Utrecht
[3] => NEC
[4] => Sparta Rotterdam
)
[4] => Array
(
[0] => Vitesse
[1] => Heracles Almelo
[2] => RKC Waalwijk
[3] => AZ
[4] => Feyenoord
)
[5] => Array
(
[0] => 3
[1] => 2
[2] => 5
[3] => 0
[4] => 1
)
[6] => Array
(
[0] => 0
[1] => 1
[2] => 0
[3] => 2
[4] => 4
)
)
(
[0] => Array
(
[0] => 2006-20072006-09-10AjaxVitesse30
[1] => 2006-20072006-09-10FC GroningenHeracles Almelo21
[2] => 2006-20072006-09-10FC UtrechtRKC Waalwijk50
[3] => 2006-20072006-09-10NECAZ02
[4] => 2006-20072006-09-10Sparta RotterdamFeyenoord14
)
[1] => Array
(
[0] => 2006-2007
[1] => 2006-2007
[2] => 2006-2007
[3] => 2006-2007
[4] => 2006-2007
)
[2] => Array
(
[0] => 2006-09-10
[1] => 2006-09-10
[2] => 2006-09-10
[3] => 2006-09-10
[4] => 2006-09-10
)
[3] => Array
(
[0] => Ajax
[1] => FC Groningen
[2] => FC Utrecht
[3] => NEC
[4] => Sparta Rotterdam
)
[4] => Array
(
[0] => Vitesse
[1] => Heracles Almelo
[2] => RKC Waalwijk
[3] => AZ
[4] => Feyenoord
)
[5] => Array
(
[0] => 3
[1] => 2
[2] => 5
[3] => 0
[4] => 1
)
[6] => Array
(
[0] => 0
[1] => 1
[2] => 0
[3] => 2
[4] => 4
)
)
Door deze code te gebruiken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$string = '
<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>
';
preg_match_all('_\<tr\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<\/tr\>_si',$string,$matched);
echo '<pre>';
print_r($matched);
?>
$string = '
<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>
<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>
';
preg_match_all('_\<tr\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<\/tr\>_si',$string,$matched);
echo '<pre>';
print_r($matched);
?>
Je kan op met $matched dus de database vullen $matched[1] is een array met de seizoenen. $matched[2] een array met de datums.
Dmv van foreach() kan je dan alles wel netjes in je tabel stoppen denk ik.
Edit
Een mogelijke andere manier:
Ipv preg_match_all gewoon preg_match, maar dan moet je wel eerst alle lijnen exploden per regel. Dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$tekst = file_get_contents('file.html');
$lines = explode("\r\n",$tekst);
$all_matches = array();
foreach($lines as $line)
{
preg_match('_\<tr\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<\/tr\>_si',$line,$matched);
$all_matches[] = $matched;
}
print_r($all_matches);
?>
$tekst = file_get_contents('file.html');
$lines = explode("\r\n",$tekst);
$all_matches = array();
foreach($lines as $line)
{
preg_match('_\<tr\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<td\>(.*?)\<\/td\>\<\/tr\>_si',$line,$matched);
$all_matches[] = $matched;
}
print_r($all_matches);
?>
Dit heb ik niet getest, dus weet niet of dit bug-free is.
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$arr = array('<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>'
);
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
foreach($ex AS $dat)
{
echo '<td>' . $dat . '</td';
}
echo '</tr>';
}
echo '</table>';
?>
$arr = array('<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>'
);
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
foreach($ex AS $dat)
{
echo '<td>' . $dat . '</td';
}
echo '</tr>';
}
echo '</table>';
?>
Is getest. Als je dus die regels in het array() $arr zet werkt dit script.
Edit: Zie en klik op test.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Ik heb het eerste script van Willem Jan nu gebruikt en het werkt goed. Alleen weet ik nog niet hoe ik de juiste gegevens bij elkaar krijg en ze in de database kan stoppen? (mysql)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
// nu zit er één regel in het array() $ex
// dus bv. $ex[0] is '2006-2007'
// $ex[1] is '2006-09-10'
// enz.
}
?>
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
// nu zit er één regel in het array() $ex
// dus bv. $ex[0] is '2006-2007'
// $ex[1] is '2006-09-10'
// enz.
}
?>
Edit: Typo.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
en hoe selecteer ik dan alleen van de eerste wedstrijd (ajax - vitesse) alle gegevens?
ik denk nu dat ik op de goede weg zit.. Zodra ik er niet uitkom laat ik weer wat van me horen. En zodra het gelukt is natuurlijk ook !
Om alléén de eerste gegevens te krijgen kun je dit doen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$val = str_replace('<tr>', '', $arr[0]);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
?>
$val = str_replace('<tr>', '', $arr[0]);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
?>
En nu zitten de gegevens van de eerste regel netjes in het array() $ex.
alleen nog 1 ding wat waarschijnlijk vrij makkelijk is maar het is me nog even niet gelukt.. hieronder eerst het script:
Code (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
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
<?php
//---------------------------------------------------------
// Connectie maken met de database
//---------------------------------------------------------
mysql_connect('localhost', 'root', '');
mysql_select_db('toto');
//data
$arr = array('<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>'
);
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
// nu zit er één regel in het array() $ex
// dus bv. $ex[0] is '2006-2007'
// $ex[1] is '2006-09-10'
// enz.
//---------------------------------------------------------
// TEAM toevoegen team_id teamnaam competitie
//---------------------------------------------------------
$query = "INSERT INTO eredivisieresults (seizoen, datum, thuisPloeg, uitPloeg, thuisDoelpunten, uitDoelpunten)
VALUES ('$ex[0]', '$ex[1]', '$ex[2]', '$ex[3]', '$ex[4]', '$ex[5]')";
$result= mysql_query($query) or die ("FOUT: " . mysql_error());
}
?>
//---------------------------------------------------------
// Connectie maken met de database
//---------------------------------------------------------
mysql_connect('localhost', 'root', '');
mysql_select_db('toto');
//data
$arr = array('<tr><td>2006-2007</td><td>2006-09-10</td><td>Ajax</td><td>Vitesse</td><td>3</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Groningen</td><td>Heracles Almelo</td><td>2</td><td>1</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>FC Utrecht</td><td>RKC Waalwijk</td><td>5</td><td>0</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>NEC</td><td>AZ</td><td>0</td><td>2</td></tr>',
'<tr><td>2006-2007</td><td>2006-09-10</td><td>Sparta Rotterdam</td><td>Feyenoord</td><td>1</td><td>4</td></tr>'
);
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
// nu zit er één regel in het array() $ex
// dus bv. $ex[0] is '2006-2007'
// $ex[1] is '2006-09-10'
// enz.
//---------------------------------------------------------
// TEAM toevoegen team_id teamnaam competitie
//---------------------------------------------------------
$query = "INSERT INTO eredivisieresults (seizoen, datum, thuisPloeg, uitPloeg, thuisDoelpunten, uitDoelpunten)
VALUES ('$ex[0]', '$ex[1]', '$ex[2]', '$ex[3]', '$ex[4]', '$ex[5]')";
$result= mysql_query($query) or die ("FOUT: " . mysql_error());
}
?>
nu gebruikt hij alleen de data die in de array staat maar ik wil graag dat hij het volgende gebruikt:
$string = file_get_contents('d:\eredivisie.txt');
hoe krijg ik $string in de array?
file() gebruikt dan zit het direct in een array().
Als je in plaats van file_get_contents() Code (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
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
<?php
//maximum time naar 0 zetten
if(!ini_get('safe_mode')) {
@set_time_limit(0);
@ini_set('max_execution_time', 0);
}
//---------------------------------------------------------
// Connectie maken met de database
//---------------------------------------------------------
mysql_connect('localhost', 'root', '');
mysql_select_db('toto');
//includen data
$arr = file('d:\eredivisie.txt');
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
//---------------------------------------------------------
// inserten in database
//---------------------------------------------------------
$query = "INSERT INTO eredivisieresults (seizoen, datum, thuisPloeg, uitPloeg, thuisDoelpunten, uitDoelpunten)
VALUES ('$ex[0]', '$ex[1]', '$ex[2]', '$ex[3]', '$ex[4]', '$ex[5]')";
$result= mysql_query($query) or die ("FOUT: " . mysql_error());
}
?>
//maximum time naar 0 zetten
if(!ini_get('safe_mode')) {
@set_time_limit(0);
@ini_set('max_execution_time', 0);
}
//---------------------------------------------------------
// Connectie maken met de database
//---------------------------------------------------------
mysql_connect('localhost', 'root', '');
mysql_select_db('toto');
//includen data
$arr = file('d:\eredivisie.txt');
echo '<table>';
foreach($arr AS $val)
{
echo '<tr>';
$val = str_replace('<tr>', '', $val);
$val = str_replace('</tr>', '', $val);
$val = str_replace('<td>', '', $val);
$ex = explode('</td>', $val);
//---------------------------------------------------------
// inserten in database
//---------------------------------------------------------
$query = "INSERT INTO eredivisieresults (seizoen, datum, thuisPloeg, uitPloeg, thuisDoelpunten, uitDoelpunten)
VALUES ('$ex[0]', '$ex[1]', '$ex[2]', '$ex[3]', '$ex[4]', '$ex[5]')";
$result= mysql_query($query) or die ("FOUT: " . mysql_error());
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Tim E
Als je het alleen insert kunnen echo '<table>'; en echo '<tr>'; er nog tussenuit.