Hallo,

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
Als je het in de database hebt, kan je het toch met mysql_fetch_array zelf in een array zetten, of zie ik dat verkeerd? :\

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? :)
nou ik heb het dus niet in de database daar wil ik het inkrijgen. Maar ik moet dus alles tussen de <td> </td> filteren en netjes in een array zetten voor het in de database gaat.

Ik dacht dat de functie 'strip' heette.. maar ik kan me vergissen? Hoe kan ik het er wel tussen uit krijgen?
Je zal met 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.
Kasper schreef op 14.09.2006 20:58

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
maar met explode kom ik er niet uit.. ik kan slechts alle <td> en <t> weghalen maar dan kan ik het nog niet elke regel opsplitsen in:

- seizoen
- datum
- thuisTeam
- uitTeam
- thuisScore
- uitScore

hoe kan ik deze gegevens per regel verkrijgen?
Als je het bestand altijd in exact deze vorm krijgt kun je het regel voor regel inlezen. En dan elke regel apart bewerken.

<tr><td>2006-2007</td>
<td>2006-09-10</td>
<td>NEC</td>
<td>AZ</td>
<td>0</td>
<td>2</td>
</tr>
maar helaas ziet hij 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>

alles achter elkaar dus..
En dan staat er ook nog een hoop html vóór en áchter?
nee het herhaald zich telkens zo:

<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
Ik heb even geen voorbeeld beschikbaar, maar dit kreeg ik eruit:

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
        )

)


Door deze code te gebruiken:
<?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);
?>

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 [php]foreach[/php]() 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:

<?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);
?>
Dit heb ik niet getest, dus weet niet of dit bug-free is.

Reageren