aan alle goede dingen komt een eind, webmasterplein.net 2003 - 2013
wij danken jullie voor al mooie momenten die dankzij dit forum ontstonden - Derk, Rutger en Stef

HTML code omzetten

Je komt er niet helemaal uit bij het scripten? Übergoede functie geschreven? Alles met betrekking tot scripting, kun je hier terecht.

HTML code omzetten

Berichtdoor Johan » 10 maart 2011 15:10

Hoi leutjes,


Ik ben met een app begonnen voor roosterwijzigingen, maar daarvoor maak ik eerst een PHP script die de roosters ophaalt omdat ik meer met PHP kan dan met Java/Python. Anyway, ik haal dus met de functie file_get_contents de roosters op van de roosterpagina.

Dit lukt allemaal prima, totdat ik de HTML code onder ogen krijg. Dit is als volgt opgebouwd (denk ik :\):

- tr voor elk uur (inderdaad, het staat niet per dag)
- table voor elke dag van dat uur (steeds 5 dus)

Bijvoorbeeld het eerste uur voor enkel maandag:
Code: Selecteer alles
<tr>
 <td align="left" width="50" class="tableHeader">1e uur</td>
 <td align="left" width="auto" class="tableCell"><table border="0" cellpadding="0" cellspacing="0" >
<tr>
 <td align="left" width="40" class="tableCellHidden">Docent</td>
 <td align="left" width="3" class="tableCellHidden">&nbsp</td>
 <td align="left" width="44" class="tableCellHidden">Lokaal</td>
 <td align="left" width="3" class="tableCellHidden">&nbsp</td>
 <td align="left" width="52" class="tableCellHidden">Vak</td>
 <td align="left" width="18" class="tableCellHidden"></td>
</tr>
</table>
</td>


Deze code dus 5x voor de hele week, en dat 9x achter elkaar voor het hele rooster. Nu wil ik gegevens uit de tabel halen en eigenlijk in een nieuwe tabel zetten, die gewoon per dag werkt. Nu filter ik met file_get_contents al een heleboel dramatische rotzooi, maar is er een subtiele weg waarmee ik bepaalde regels op kan halen? Misschien met preg_replace of iets dergelijks?

Het idee is dat ik per dag een apart rooster krijg.. Dus als er een optie is om PHP een tabel anders te laten lezen dan zoals in de HTML is dat ook leuk :}

_____________________________________________________________________________
Edit:

Ik ben inmiddels al weer iets verder. Met strip_tags($output, '<table>'); laat ik alle HTML weghalen, behalve de tables. Daarna gooi ik dmv preg_replace($nonum, $withnum, $routput); er een replace overheen waarmee ik alle tabellen een nummer geef (momenteel allemaal dezelfde)..

Nu wil ik dat elke tabel een opeenvolgend nummer krijgt. Ik gok dus dat $nonum in een loop moet die het resultaat steeds optelt en dan met 1 verhoogt? :P
Avatar gebruiker
Johan
wmpr
 
Berichten: 676
Geregistreerd: 07 jan 2008 15:42

Re: HTML code omzetten

Berichtdoor frizzy » 10 maart 2011 16:26

Je kunt natuurlijk ook DOM gebruiken, dat is hiervoor gebouwd en dus veel makkelijker te gebruiken:

http://php.net/manual/en/book.dom.php
frizzy
wmpr
 
Berichten: 4261
Geregistreerd: 20 sep 2006 16:03
Woonplaats: Boskoop :D

Re: HTML code omzetten

Berichtdoor Johan » 11 maart 2011 15:23

DOM beheers ik niet echt. Ik heb nu dit:

Code: Selecteer alles
<?php
// Getting variables per student
    
$num $_GET['num'];
    
$klas $_GET['klas'];    
// Search for the corresponding roster, leaving unnessecary stuff out
    
$output file_get_contents("--ubergeheim linkje met variabelen erin--"NULLNULL85122221);

    
$nonum '<table border="0" cellpadding="0" cellspacing="0" >';
    
$totaltables preg_match_all($nonum$output$totaltables);
    
$routput strip_tags($output'<table>');    
    
$replace = array();
    
$tablenum 0;
    for (
$tablenum 0$tablenum <= $totaltables$tablenum++){
        
$replace[] =  'div id="num' $tablenum '"';
    }
    
$searcharray array_fill(0$totaltables$nonum);
    
ksort($searcharray);
    
ksort($replace);
    
$routput preg_replace($searcharray$replace$routput);
    
$routput str_replace('</table>''</div>'$routput);
    echo 
$routput


Op de één of andere manier krijgt nog steeds iedere div een id="num0" mee.. Iemand een idee?
Avatar gebruiker
Johan
wmpr
 
Berichten: 676
Geregistreerd: 07 jan 2008 15:42

Re: HTML code omzetten

Berichtdoor Derk » 12 maart 2011 19:32

Code: Selecteer alles
preg_match_all('~<td align="left" width="[0-9]*" class="tableCellHidden">(.*?)<\/td>~is',$output,$thisisfound);
print_r($thisisfound); 


Probeer dit eens. Of post even de bron van een hele pagina.
Afbeelding
Avatar gebruiker
Derk
Beheerder
Beheerder
 
Berichten: 12634
Geregistreerd: 27 nov 2003 19:50
Woonplaats: Houten

Re: HTML code omzetten

Berichtdoor Moonstrike » 12 okt 2011 13:29

Geen probleem joh :D
Avatar gebruiker
Moonstrike
wmpr
 
Berichten: 3287
Geregistreerd: 22 apr 2006 14:40
Woonplaats: Lui lekker land 8)

Re: HTML code omzetten

Berichtdoor Remi » 12 okt 2011 19:08

Doen we van harte.
Avatar gebruiker
Remi
wmpr
 
Berichten: 3010
Geregistreerd: 04 apr 2006 15:22


Keer terug naar PHP, ASP, SQL



cron