login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array opdelen/uitlezen

Offline Martnt - 03/04/2010 11:21 (laatste wijziging 03/04/2010 11:22)
Avatar van MartntNieuw lid Beste Allemaal,

Ik ben bezig met een script zodat ik mijn school rooster makkelijk kan uitlezen met mijn iPhone. Nu ben ik alleen vastgelopen en na enkele dagen proberen en zoeken naar een oplossing kom ik er gewoon niet uit. Daarom roep ik jullie hulp in.

Ik heb mijn rooster nu in een array staan met alles achter elkaar, zo ziet hij er nu uit:
  1. (
  2. [0] => <td class="celtitel">Maandag 29-maart-2010</td>
  3. [1] => <td class="celtijd">09:15- 10:00</td>
  4. [2] => <td class="celvak">Persoonlijkheidsleer</td>
  5. [3] => <td class="cellokaal">C076</td>
  6. [4] => <td class="celtijd">10:30- 12:00</td>
  7. [5] => <td class="celvak">Persoonlijkheidsleer</td>
  8. [6] => <td class="cellokaal">T115</td>
  9. [7] => <td class="celtitel">Dinsdag 30-maart-2010</td>
  10. [8] => <td class="celtijd">15:15- 16:45</td>
  11. [9] => <td class="celvak">Diagnostisch Onderzoek 1b</td>
  12. [10] => <td class="cellokaal">C061</td>
  13. [11] => <td class="celtitel">Woensdag 31-maart-2010</td>
  14. [12] => <td class="celtijd">12:00- 13:30</td>
  15. [13] => <td class="celvak">Diagnostisch Onderzoek 1b</td>
  16. [14] => <td class="cellokaal">A235</td>
  17. [15] => <td class="celtijd">13:30- 14:15</td>
  18. [16] => <td class="celvak">Sociale Psychologie</td>
  19. [17] => <td class="cellokaal">C061</td>
  20. [18] => <td class="celtijd">15:15- 16:45</td>
  21. [19] => <td class="celvak">Toegepast Onderzoek 1c</td>
  22. [20] => <td class="cellokaal">A343</td>
  23. [21] => <td class="celtitel">Donderdag 01-april-2010</td>
  24. [22] => <td class="celtijd">08:30- 10:00</td>
  25. [23] => <td class="celvak">Workshop</td>
  26. [24] => <td class="cellokaal">C016</td>
  27. [25] => <td class="celtijd">10:30- 12:00</td>
  28. [26] => <td class="celvak">Workshop</td>
  29. [27] => <td class="cellokaal">C016</td>
  30. [28] => <td class="celtijd">12:45- 13:30</td>
  31. [29] => <td class="celvak">Sociale Psychologie</td>
  32. [30] => <td class="cellokaal">C061</td>
  33. [31] => <td class="celtijd">16:45- 18:15</td>
  34. [32] => <td class="celvak">Diagnostisch Onderzoek 1b</td>
  35. [33] => <td class="cellokaal">A331</td>
  36. )


Wat ik nu wil is deze array opdelen in stukjes zodat ik de lessen bij de goede dag heb staan. Hij moet dus zo opgedeeld worden:

  1. [0] => <td class="celtitel">Maandag 29-maart-2010</td>
  2. [1] => <td class="celtijd">09:15- 10:00</td>
  3. [2] => <td class="celvak">Persoonlijkheidsleer</td>
  4. [3] => <td class="cellokaal">C076</td>
  5. [4] => <td class="celtijd">10:30- 12:00</td>
  6. [5] => <td class="celvak">Persoonlijkheidsleer</td>
  7. [6] => <td class="cellokaal">T115</td>


  1. [7] => <td class="celtitel">Dinsdag 30-maart-2010</td>
  2. [8] => <td class="celtijd">15:15- 16:45</td>
  3. [9] => <td class="celvak">Diagnostisch Onderzoek 1b</td>
  4. [10] => <td class="cellokaal">C061</td>


etc. etc.

Het enige probleem waar ik tegenaan loop is dat deze waarden variabel zijn, ze veranderen elke week. Wat het script dus moet doen is de dagen met data herkennen (kan aan <td class="celtitel">) en het script vanaf daar opsplitsen zodat je het bovenstaande krijgt. Kan iemand mij hiermee verder helpen met een stukje code?

Wat ik wel weet/denk is dat dit met regular expressions moet dus iets in de trant van:
  1. '@<td class="celtitel">.*?</td>@siu'


Maar verder kom ik dus niet...

Alvast hartelijk bedankt,
Martijn

3 antwoorden

Gesponsorde links
Offline Koen - 03/04/2010 11:48
Avatar van Koen PHP expert
  1. <?php
  2. $lessenrooster = array('<td class="celtitel">Maandag 29-maart-2010</td>', '<td class="celtijd">09:15- 10:00</td>', '<td class="celvak">Persoonlijkheidsleer</td>', '<td class="cellokaal">C076</td>', '<td class="celtijd">10:30- 12:00</td>', '<td class="celvak">Persoonlijkheidsleer</td>', '<td class="cellokaal">T115</td>', '<td class="celtitel">Dinsdag 30-maart-2010</td>', '<td class="celtijd">15:15- 16:45</td>', '<td class="celvak">Diagnostisch Onderzoek 1b</td>', '<td class="cellokaal">C061</td>', '<td class="celtitel">Woensdag 31-maart-2010</td>', '<td class="celtijd">12:00- 13:30</td>', '<td class="celvak">Diagnostisch Onderzoek 1b</td>', '<td class="cellokaal">A235</td>', '<td class="celtijd">13:30- 14:15</td>', '<td class="celvak">Sociale Psychologie</td>', '<td class="cellokaal">C061</td>', '<td class="celtijd">15:15- 16:45</td>', '<td class="celvak">Toegepast Onderzoek 1c</td>', '<td class="cellokaal">A343</td>');
  3. $new_lessenrooster = array();
  4. $index = $sub = -1;
  5. foreach($lessenrooster as $value)
  6. {
  7. if(preg_match('~\<td class="cel(?P<name>[^"]+)"\>(?P<inhoud>[^\<]+)\</td\>~i', $value, $matches))
  8. {
  9. if($matches['name'] == 'titel')
  10. {
  11. $index++;
  12. $new_lessenrooster[$index][$matches['name']] = $matches['inhoud'];
  13. continue;
  14. }
  15. elseif($matches['name'] == 'tijd')
  16. {
  17. $sub++;
  18. $new_lessenrooster[$index][$sub][$matches['name']] = $matches['inhoud'];
  19. continue;
  20. }
  21. else
  22. {
  23. $new_lessenrooster[$index][$sub][$matches['name']] = $matches['inhoud'];
  24. }
  25. }
  26. }
  27. echo '<pre>', print_r($new_lessenrooster), '</pre>';

  1. (
  2. [0] => Array
  3. (
  4. [titel] => Maandag 29-maart-2010
  5. [0] => Array
  6. (
  7. [tijd] => 09:15- 10:00
  8. [vak] => Persoonlijkheidsleer
  9. [lokaal] => C076
  10. )
  11.  
  12. [1] => Array
  13. (
  14. [tijd] => 10:30- 12:00
  15. [vak] => Persoonlijkheidsleer
  16. [lokaal] => T115
  17. )
  18.  
  19. )
  20.  
  21. [1] => Array
  22. (
  23. [titel] => Dinsdag 30-maart-2010
  24. [2] => Array
  25. (
  26. [tijd] => 15:15- 16:45
  27. [vak] => Diagnostisch Onderzoek 1b
  28. [lokaal] => C061
  29. )
  30.  
  31. )
  32.  
  33. [2] => Array
  34. (
  35. [titel] => Woensdag 31-maart-2010
  36. [3] => Array
  37. (
  38. [tijd] => 12:00- 13:30
  39. [vak] => Diagnostisch Onderzoek 1b
  40. [lokaal] => A235
  41. )
  42.  
  43. [4] => Array
  44. (
  45. [tijd] => 13:30- 14:15
  46. [vak] => Sociale Psychologie
  47. [lokaal] => C061
  48. )
  49.  
  50. [5] => Array
  51. (
  52. [tijd] => 15:15- 16:45
  53. [vak] => Toegepast Onderzoek 1c
  54. [lokaal] => A343
  55. )
  56.  
  57. )
  58.  
  59. )


Spreekt voor zich neem ik aan. 
Offline Martnt - 04/04/2010 09:52
Avatar van Martnt Nieuw lid Hartstikke bedankt man! Het werkt perfect 
Offline Ibrahim - 04/04/2010 12:43
Avatar van Ibrahim PHP expert Maar snap je ook hoe Koen het heeft gedaan? Hoewel het goed is dat hij het heeft gescript, maar als je er niets van snapt had dit net zo goed bij SamenWerken kunnen staan.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.227s