[PHP] Rooster -> Array

Gestart doorNielsjojo17 reacties121 weergaven

18 berichten · pagina 1 van 2

Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hoi,

Ik ben aan het proberen om mijn rooster om te zetten in een array.
Het rooster wordt als volgt weergegeven:

<table border="3" rules="all" cellpadding="1" cellspacing="1">
<tbody><tr>
<td class="ttdayheader">&nbsp;</td>
<td class="ttdayheader" colspan="6">{datum}</td>
</tr><tr>
<td rowspan="2" class="tthourheader">1</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td>
</tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">2</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">3</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">4</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">5</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">6</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">7</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr><tr>
<td rowspan="2" class="tthourheader">8</td>
<td colspan="6" rowspan="2" align="center" nowrap="1"><table><tbody><tr><td width="25%" nowrap="1"><font size="2" face="Verdana">
{docent}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{vak}
</font> </td>
<td width="25%" nowrap="1"><font size="2" face="Verdana">
{lokaal}
</font> </td>
</tr></tbody></table></td></tr><tr>
</tr></tbody></table>


Nou zou ik de array graag zo willen hebben:

Array
(
    [1] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [2] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [3] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [4] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [5] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [6] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [7] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

    [8] => Array
        (
            [docent] => {docent}
            [vak] => {vak}
            [lokaal] => {lokaal}
        )

)


Hoe zou ik dit het beste kunnen doen?

Zelf heb ik al wat geprobeerd met [func]preg_match[/func] maar daar kom ik niet ver mee.

Het roostersysteem is gebaseerd op Untis.

Alvast bedankt!
Groeten,
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
je zult het wel moeten doen met preg match.
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Raaoul schreef:
je zult het wel moeten doen met preg match.
Dat wist ik al, maar hoe?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Nielsjojo schreef:
Eerdere citaten tonen
Raaoul schreef:
je zult het wel moeten doen met preg match.
Dat wist ik al, maar hoe?
door de php docs te bekijken en op google te zoeken
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Probeerde dit maar dat werkte niet:

[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#<td width="25%" nowrap="1"><font size="2" face="Verdana">(.*)</font> </td>#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$content[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$rooster[/COLOR][COLOR= #007700]);[/COLOR]
?>
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dit soort problemen kan je altijd het beste met explode() aanpakken. Kijk even of dat lukt, anders kunnen we altijd nog helpen.
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
Dit soort problemen kan je altijd het beste met explode() aanpakken. Kijk even of dat lukt, anders kunnen we altijd nog helpen.
Waar zou ik het beste op kunnen exploden?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Nielsjojo schreef:
Eerdere citaten tonen
Rogier schreef:
Dit soort problemen kan je altijd het beste met explode() aanpakken. Kijk even of dat lukt, anders kunnen we altijd nog helpen.
Waar zou ik het beste op kunnen exploden?
op html tags?
0
Berichten
9.969
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Nielsjojo schreef:
Probeerde dit maar dat werkte niet:
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]#<td width="25%" nowrap="1"><font size="2" face="Verdana">(.*)</font> </td>#[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$content[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$rooster[/COLOR][COLOR= #007700]);[/COLOR]
?>


Preg_match neemt ook de newlines mee dacht ik, dus hij herkent het niet op die manier aangezien je voorbeeldcode ook het vak op een nieuwe regel staat smile
toevoeging op 22 juli 2013, 15:48:58:
Correct me if im wrongsmile
toevoeging op 22 juli 2013, 15:56:11:
preg_match_all zou ook kunnen werken bedenk ik me nu, ben helaas niet op de computer dus kan het niet voor je testen.
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Met preg_match_all kom ik ook niet verder.
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Codeblok (rooster.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


# Ophalen rooster content
$content = file_get_contents(rooster.php);

# Datum van rooster ophalen
preg_match(#(.*?)#, $content, $datum);

# De datum
$datum = $datum[0];

# Rooster opsplitsen in uren
preg_match_all(#(.*?)#s, $content, $uren);

# Een loop in de uren
foreach($uren[0] as $uur => $info) {

# Informatie zoeken in het uur
preg_match_all(#(.*?)#s, $info, $newinfo);

# Het uur
$uur = $uur+1;

# Uit array halen
$docent = $newinfo[1][0];
$vak = $newinfo[1][1];
$lokaal = $newinfo[1][2];
}


?>

Het kan vast veel efficiënter maar het werkt emo
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Perryz schreef:
Codeblok (rooster.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


# Ophalen rooster content
$content = file_get_contents(rooster.php);

# Datum van rooster ophalen
preg_match(#(.*?)#, $content, $datum);

# De datum
$datum = $datum[0];

# Rooster opsplitsen in uren
preg_match_all(#(.*?)#s, $content, $uren);

# Een loop in de uren
foreach($uren[0] as $uur => $info) {

# Informatie zoeken in het uur
preg_match_all(#(.*?)#s, $info, $newinfo);

# Het uur
$uur = $uur+1;

# Uit array halen
$docent = $newinfo[1][0];
$vak = $newinfo[1][1];
$lokaal = $newinfo[1][2];
}


?>

Het kan vast veel efficiënter maar het werkt emo
Het werkt bij mij niet.

Ik krijg:

Array
(
    [0] => Array
        (
            [0] => 
{docent}

            [1] => 
{vak}

            [2] => 
{lokaal}

        )

    [1] => Array
        (
            [0] => 
{docent}

            [1] => 
{vak}

            [2] => 
{lokaal}

        )

)


Terwijl ik alle uren wil hebben
0
Berichten
1.544
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Om uren te doen moet je het ingewikkelder aanpakken. Daar heb je omzet methodes voor. Je moet wat meer zelf doen maargoed.

Dit is de functie die in mijn script staat die de uren array moet omzetten naar een multidimensionale array. Dus dat je per dag kan zien welke vakken je hebt.

Codeblok (voorbeeld.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


/**
* Create from the single array from the input to a multi dimension array ordered by hours.
* @param array $array
* @param integer $dagen
* @return array
*/

protected function _array_table_correct($array, $dagen = 5)
{

$uren = array();
$dag = 0;
$uur = 0;

foreach($array as $hour)
{

$hour[start_uur] = $uur + 1;
$uren[$uur][$dag] = $hour;

if($hour[hours] > 1)
{

for($i = 1; $i < $hour[hours]; $i++)
{

$uren[$uur+$i][$dag] = $hour;
}
}


//Increase the "dag" and sometimes the "uur"
while(true)
{

$dag++;

if($dag >= $dagen)
{

$dag = 0;
$uur++;
}


if(!isset($uren[$uur][$dag]))
break;
}
}


return $uren;
}

?>
0
Nielsjojo

Lid · Topicstarter

Berichten
1.871
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Sorry,

Ik snap niet precies hoe dit werkt?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Misschien moet je dan eens PHP leren?
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren