Avatar billede Bjarne Novice
28. september 2005 - 16:50 Der er 37 kommentarer og
1 løsning

Parser til at hente skema

Jeg er ved at lave noget kalender-system for en ven. Det handler om at hente nogle informationer ind fra et online skoleskema. Skemaet kan findes her: http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940

Det skal kun hente informationerne, jeg arbejder selv videre med det. Jeg vil give 300 kr for parseren.
Avatar billede showsource Seniormester
29. september 2005 - 09:00 #1
Hvordan skal info deles op?
Her er en start:

<?php

function line_number($var, $start=0) {
global $url;
    for($i = $start; $i < count($url); $i++) {
        if(preg_match($var, $url[$i])) {
        return $i;
        }
    }
}

$url_page = "http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940";
$url = @file($url_page);

    if($url) {

    $start = line_number("<span id=\"skemaspanSkema1\">");
    $slut = line_number("</span>", $start);

        for($i = $start; $i < $slut; $i++) {
        echo $url[$i];
        }

    }else{
    echo"Fejl! <b>". $url_page ."</b> kan ikke læses!";
    }
?>
Avatar billede Bjarne Novice
29. september 2005 - 11:40 #2
Hver time skal sættes i en tabel i en MySQL database. En time sammen med det modul den ligger i, sammen med dag og tidspunkt.
Avatar billede Bjarne Novice
30. september 2005 - 19:33 #3
Det ser jo rigtig godt ud.. Er du interesseret i at lave parseren færdig? Så er de 300 kr dine:)
Avatar billede plazm Nybegynder
30. september 2005 - 21:07 #4
Bjarne, kik om funktionen "lectio" under lektieportal er noget for dig
www.plazm.dk
Avatar billede plazm Nybegynder
30. september 2005 - 21:10 #5
Hehe, så lige, du går da to klasser under mig ;)
Avatar billede Bjarne Novice
30. september 2005 - 22:07 #6
plazm> tak for tilbudet, men det har umiddelbart ikke nogen interesse. Jeg er interesseret i en parser til lektioskemaet:)
Avatar billede plazm Nybegynder
02. oktober 2005 - 12:29 #7
bjarne, det er jo netop det der er, hvis du kikkede efter ;)
men her kommer koden om ikke andet.
Jeg ved godt min databasestruktur kunne være bedre, men det var nu engang sådan jeg fik lyst til at lave det :p

<?php
  include("../../include/config.php");
  if (!isset($_SESSION["brugerid"])) return true;
  $lines = file($_POST["uri"]);
  $dag=1;
  include("timeoversigt.php");
  foreach ($lines as $line_num => $line) {
    if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
      $linie = explode(" ",strip_tags($line));
      $fag = explode("-",$linie[1]);
      $skema[$dag][count($skema[$dag])] = $fag[0];
      $laerer[$dag][count($laerer[$dag])] = $fag[1]; // Indeholder laerer IKKE I BRUG
      $lokale[$dag][count($lokale[$dag])] = $fag[2]; // Indeholder lokale IKKE I BRUG
      $dag++;
      if ($dag == 6) $dag=1;
    }
    elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
      $linie = explode(" ",str_replace("modul","",strip_tags($line)));
      $klokken = explode("-",$linie[1]);
      $start[] = $klokken[0];
      $slut[] = $klokken[1];
    }
  }
  opendb();
  $sqlquery = "SELECT * FROM skoleskema WHERE brugerid='".$_SESSION["brugerid"]."'";
  $result = mysql_query($sqlquery) or die(mysql_error());
  $info = mysql_fetch_array($result);
  if (!$info["brugerid"]) {
    $sqlquery = "INSERT INTO skoleskema (brugerid) VALUES ('".$_SESSION["brugerid"]."')";
    mysql_query($sqlquery);
  }
  $update = "UPDATE skoleskema set ";
  $dage = Array("mandag","tirsdag","onsdag","torsdag","fredag");
  for($time=1;$time<10;$time++){
    $update .= "`start-".$time."` = '".addslashes($start[($time - 1)])."', ";
    $update .= "`slut-".$time."` = '".addslashes($slut[($time - 1)])."', ";
    for($dag=0;$dag<5;$dag++) {
      $update .= "`".$dage[$dag]."-".$time."` = '".addslashes(fkt2fag($skema[($dag + 1)][($time - 1)]))."', ";
    }
  }
  $update = substr($update, 0, -2);
  $update .= " WHERE brugerid = '".$_SESSION["brugerid"]."'";
  mysql_query($update);
  header("location: ../../lektie/vis-skema/");
?>


timeoversigt.php indeholder følgende:
<?php
$timer = array(
"Fri" => array(""),
"Matematik" => array("MAx","MA","maA"),
"Samfundsfag" => array("SAx","saC"),
"Musik" => array(" "),
"Salg og Service" => array(" "),
"Dansk" => array("dax","daA"),
"Fysik" => array("FYx","fyB"),
"Psykologi" => array("Ps"),
"Drama" => array("Dr"),
"Engelsk" => array("ENx","enB"),
"Kemi" => array("KEx","KEM","keB"),
"Filosofi" => array("Fi"),
"Billedkunst" => array(" "),
"Byggeri og Energi" => array("TKbx"),
"Tysk" => array("TYx"),
"Biologi" => array("BIx","biB"),
"Historie" => array(" "),
"Film og Tv" => array(" "),
"Informations- Teknologi" => array("Inx"),
"Fransk" => array(" "),
"Naturfag" => array(" "),
"Oldtids- Kundskab" => array(" "),
"Astronomi" => array(" "),
"Erhvervs- Økonomi" => array(" "),
"Latin" => array(" "),
"Geografi" => array(" "),
"Religion" => array(""),
"Tværfag" => array(" "),
"Afsætning" => array(" "),
"Spansk" => array(" "),
"Teknologi" => array("TEx"),
"Teknologi- Historie" => array("Hix"),
"Service og Kommunikation" => array("TKsx"),
"Datalogi" => array("Dl"),
"National- Økonomi" => array("N&#248;x"),
"Andet" => array(" ")
);
function fkt2fag($fkt) {
  global $timer;
  foreach($timer as $time => $navne) {
    if(in_array($fkt, $navne)) { $var = $time; break; }
  }
  if (isset($var)) return $var;
  else return $fkt;
}
?>
Avatar billede plazm Nybegynder
02. oktober 2005 - 13:02 #8
$lines = file($_POST["uri"]);
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    $skema[$dag][count($skema[$dag])] = $fag[0];
    $laerer[$dag][count($laerer[$dag])] = $fag[1]; // Indeholder laerer IKKE I BRUG
    $lokale[$dag][count($lokale[$dag])] = $fag[2]; // Indeholder lokale IKKE I BRUG
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}

er sådan set det eneste du skal bruge :)
Avatar billede Bjarne Novice
02. oktober 2005 - 21:33 #9
plazm: Undskyld, jeg misforstod dig komplet. Jeg har siddet og leget med din kode i en times tid nu. Jeg kan simpelthen ikke få den til at virke. Jeg må indrømme at jeg ikke umiddelbart kan gennemskue koden. Og det virker selvfølgelig ikke bare at copy ´n' paste koden. Får bare en lang række errors Undefined variable: skema, Undefined offset: 2 osv.
Hvordan får du koden til at "se" fx ændringer i skemaet?

Eller sagt på en anden måde: Kunne du ikke have lyst til at ligge en lille forklaring ved koden:)
Avatar billede plazm Nybegynder
02. oktober 2005 - 21:52 #10
Hej Bjarne.
Har du tjekket at du har noget i $_POST["uri"], da det er i den variabel lectios addresse vil være. Prøv at skifte den til om ikke andet.
$lines = file("http://lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362671335");

Scriptet løber så hele den side igennem efter et tabel-felt med enten et "fag" eller et klokkeslet.
Når du vil give noget info ud fra scriptet så kan du hente mandagens timer i
$skema[1][0] = 1. time mandag
$skema[1][0] = 2. time mandag
$skema[2][0] = 1. time tirsdag
hvis du har forstået systemet.
Starttidspunktet og sluttidspunktet af 1. Modul vil du så kunne hente i henholdsvis
$start[0]
$slut[0]

Du kan evt. kontakte mig via msn på nittebarn _ at _ gmail _ com
Avatar billede Bjarne Novice
02. oktober 2005 - 22:13 #11
ja ok. de fejl jeg får er notice fejl:)

Der er et lille problem med parseren:

Hvis jeg skriver $skema[1][2] får jeg iv. Og det er jo faktisk forkert da timen er ændret til bi
Avatar billede plazm Nybegynder
02. oktober 2005 - 22:31 #12
Det havde jeg faktisk overset :)
Ændret nu:
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?$fag[0]:$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[0] == ""?$fag[1]:$altfag[1]);
    $lokale[$dag][count($lokale[$dag])] = ($altfag[0] == ""?$fag[2]:$altfag[2]);
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
Avatar billede Bjarne Novice
02. oktober 2005 - 22:43 #13
hmm, det er lige ved at være der, men der er alligevel lidt fejl:

<?php
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    @$linie = explode(" ",strip_tags($line));
    @$fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">")) {
    @$linie = explode(" ",strip_tags($lines[$line_num + 2]));
    @$altfag = explode("-",$linie[1]); }
    @$skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?$fag[0]:$altfag[0]);
    @$laerer[$dag][count($laerer[$dag])] = ($altfag[0] == ""?$fag[1]:$altfag[1]);
    @$lokale[$dag][count($lokale[$dag])] = ($altfag[0] == ""?$fag[2]:$altfag[2]);
    @$dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    @$linie = explode(" ",str_replace("modul","",strip_tags($line)));
    @$klokken = explode("-",$linie[1]);
    @$start[] = $klokken[0];
    @$slut[] = $klokken[1];
  }
}

echo '1. '.$skema[1][0].'<br />';
echo '2. '.$skema[1][1].'<br />';
echo '3. '.$skema[1][2].'<br />';
echo '4. '.$skema[1][3].'<br />';
echo '5. '.$skema[1][4].'<br />';
echo '6. '.$skema[1][5].'<br />';
echo '7. '.$skema[1][6].'<br />';
echo '8. '.$skema[1][7].'<br />';
echo '9. '.$skema[1][8].'<br />';

?>

giver:
1. saC
2. saC
3. biB
4. biB
5. biB
6. keB
7. fyB
8. vp
9. vp

Der burde stå:
1. saC
2. saC
3. biB
4. DaA
5. biB
6. fyB
7. fyB
8.
9.
Avatar billede plazm Nybegynder
02. oktober 2005 - 23:11 #14
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$nyfag[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$nyfag[1]):$altfag[1]); // Indeholder laerer IKKE I BRUG
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$nyfag[2]):$altfag[2]); // Indeholder lokale IKKE I BRUG
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
Avatar billede plazm Nybegynder
02. oktober 2005 - 23:11 #15
så tror jeg vi er der :)
Avatar billede plazm Nybegynder
02. oktober 2005 - 23:12 #16
nej, var vi ikk :( 2sek.
Avatar billede plazm Nybegynder
02. oktober 2005 - 23:15 #17
Jo, det var vi :)
Avatar billede plazm Nybegynder
02. oktober 2005 - 23:15 #18
sad og kikkede på forkerte skema her til sidst ;)
Avatar billede Bjarne Novice
02. oktober 2005 - 23:59 #19
hehe, ok... Jeg kan også kun finde en fejl.. Scriptet medtager timer som er blevet aflyst. Ellers virker det da bare helt perfekt.
Avatar billede plazm Nybegynder
03. oktober 2005 - 07:44 #20
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
    echo $line_num."<br>";
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && !strstr($lines[$line_num + 2],"<div")) {
      unset($fag);   
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$nyfag[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$nyfag[1]):$altfag[1]); // Indeholder laerer IKKE I BRUG
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$nyfag[2]):$altfag[2]); // Indeholder lokale IKKE I BRUG
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
foreach($skema as $dagnr => $dag) {
  echo "<br />".$dagnr."<br>";
  foreach($dag as $timenr => $time) {
    echo $time."<br>".$laerer[$dagnr][$timenr]."<br>".$lokale[$dagnr][$timenr]."<br><br>";
  }
}
Avatar billede plazm Nybegynder
03. oktober 2005 - 10:16 #21
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
    echo $line_num."<br>";
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && !strstr($lines[$line_num + 2],"<div")) {
      unset($fag); 
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$nyfag[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$nyfag[1]):$altfag[1]); // Indeholder laerer IKKE I BRUG
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$nyfag[2]):$altfag[2]); // Indeholder lokale IKKE I BRUG
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}

er egentligt det eneste du skal bruge, det andet var bare noget debug :)
Avatar billede plazm Nybegynder
03. oktober 2005 - 12:33 #22
Der var lige sneget sig en lille fejl mere ind.

$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
    echo $line_num."<br>";
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && !strstr($lines[$line_num + 2],"<div")) {
      unset($fag);
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$fag2[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$fag2[1]):$altfag[1]);
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$fag2[2]):$altfag[2]);
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
Avatar billede Bjarne Novice
03. oktober 2005 - 20:46 #23
dit sidste bugfix har desværre ført lidt fejl med sig. Det udskriver vp ved de steder, hvor der ikke er påsat timer
Avatar billede plazm Nybegynder
03. oktober 2005 - 20:56 #24
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    unset($fag2);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
    echo $line_num."<br>";
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && !strstr($lines[$line_num + 2],"<div")) {
      unset($fag);
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$fag2[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$fag2[1]):$altfag[1]);
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$fag2[2]):$altfag[2]);
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
Avatar billede plazm Nybegynder
03. oktober 2005 - 20:57 #25
Sådan, nu burde den være der :)
Avatar billede Bjarne Novice
03. oktober 2005 - 21:33 #26
tror nu der er en lille fejl stadig:)
Dagene er forrykkede. Jeg kan godt rykke dem, men jeg kan ikke få scriptet til at vise mandag
Avatar billede plazm Nybegynder
03. oktober 2005 - 22:13 #27
Øhh, er du sikker på det? for jeg har lige c/p'et det og det virker fint:

<?php
$lines = file("http://www.lectio.dk/lectio/263/SkemaGenerator.aspx?type=elev&id=1362670940");
$dag=1;
foreach ($lines as $line_num => $line) {
  if (strstr($line,"<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\"")) {
    unset($altfag);
    unset($fag);
    unset($fag2);
    $linie = explode(" ",strip_tags($line));
    $fag = explode("-",$linie[1]);
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=changedlesson")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $altfag = explode("-",$linie[1]); }
    if (strstr($lines[$line_num + 2],"<div title=\"\">") && strstr($lines[$line_num + 2],"class=lektionCls")) { $linie = explode(" ",strip_tags($lines[$line_num + 2])); $fag2 = explode("-",$linie[1]); }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && strstr($lines[$line_num + 2],"<div")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 4]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 6]));
      $altfag[2] = strip_tags($lines[$line_num + 8]);
    }
    if (strstr($line,"class=lektionCls") && strstr($lines[$line_num + 2],"<td valign=middle nowrap align=center>")) {
      $temp = explode(" ",strip_tags($lines[$line_num + 2]));
      $altfag[0] = $temp[1];
      $altfag[1] = strip_tags(str_replace("<br>"," ",$lines[$line_num + 4]));
      $altfag[2] = strip_tags($lines[$line_num + 6]);
    }
    if (strstr($line,"class=changedaflystlesson") && $altfag[0] == "" && !strstr($lines[$line_num + 2],"<div")) {
      unset($fag);
    }
    $skema[$dag][count($skema[$dag])] = ($altfag[0] == ""?($fag2[0] == ""?$fag[0]:$fag[0]." ".$fag2[0]):$altfag[0]);
    $laerer[$dag][count($laerer[$dag])] = ($altfag[1] == ""?($fag2[1] == ""?$fag[1]:$fag[1]." ".$fag2[1]):$altfag[1]);
    $lokale[$dag][count($lokale[$dag])] = ($altfag[2] == ""?($fag2[2] == ""?$fag[2]:$fag[2]." ".$fag2[2]):$altfag[2]);
    $dag++;
    if ($dag == 6) $dag=1;
  }
  elseif(strstr($line,"<td bgcolor=\"#f8f8f8\" valign=\"top\">")) {
    $linie = explode(" ",str_replace("modul","",strip_tags($line)));
    $klokken = explode("-",$linie[1]);
    $start[] = $klokken[0];
    $slut[] = $klokken[1];
  }
}
foreach($skema as $dagnr => $dag) {
  echo "<br />".$dagnr."<br>";
  foreach($dag as $timenr => $time) {
    echo $time."<br>".$laerer[$dagnr][$timenr]."<br>".$lokale[$dagnr][$timenr]."<br><br>";
  }
}

?>

Husk at mandag = 1 og time 1 = 0
Avatar billede Bjarne Novice
03. oktober 2005 - 22:59 #28
jeg prøver lige igen så. Jeg må jo have lavet en fejl af en slags:)
Avatar billede Bjarne Novice
03. oktober 2005 - 23:07 #29
hvis jeg skriver echo $skema[1][0]; får jeg maA hvor jeg burde få saC?
Avatar billede plazm Nybegynder
03. oktober 2005 - 23:10 #30
kan du ikk lige smide alt den kode du bruger ? for jeg tror der er noget som forstyrer koden, da jeg får saC som jeg skal.
Avatar billede plazm Nybegynder
03. oktober 2005 - 23:11 #31
Du kan evt. adde mig til msn, da det vil gå lidt hurtigere med hjælp derad, og så kan vi poste løsning bagefter.
Avatar billede Bjarne Novice
03. oktober 2005 - 23:17 #32
jo, helt enig.. var lige ved at foreslå det samme
Avatar billede plazm Nybegynder
03. oktober 2005 - 23:29 #33
Problem løst via msn, han havde glemt at c/p $dag = 1; ;)
Avatar billede Bjarne Novice
04. oktober 2005 - 21:17 #34
lukker
Avatar billede Slettet bruger
14. september 2009 - 23:07 #35
Kan vi genoptage dette spg? Nogen der har en opdatering?
Avatar billede plazm Nybegynder
15. september 2009 - 07:45 #36
Jeg tror ikke scriptet er blevet opgraderet de sidste 3 år, jeg har i hvert fald ikke selv brugt tid på at gøre det.

Men tror en evt. opdatering vil kræve noget mere end bare en omskrivning af det crapkode jeg fik kastet af mig sidst, det ser ud til at de har omstruktureret en del.
Avatar billede Slettet bruger
15. september 2009 - 07:54 #37
Skal jeg oprette et nyt spg? Vil du så hjælpe med at programmere en ny parser?
Avatar billede plazm Nybegynder
15. september 2009 - 08:37 #38
Først af alt, jeg har ikke tiden til at sætte mig ind i hvordan det nye Lectio er opbygget lige nu, så min hjælp vil være absolut minimal på selve parsing delen.

Derudover så syns jeg du skal gå i gang med at programmere den selv, der er masser af måder at gøre det på, og ovenfor finder du sågar et eksempel på hvordan det kunne gøres, og jeg ved at der er masser af guides til parsing af data rundt omkring på nettet, så hvis det snask jeg har lavet ikke er forståeligt så er de guides jeg fandt på nettet dengang jeg skulle lave en, der højst sandsynligvis stadig.

Så nej, jeg vil ikke hjælpe dig med at programmere en, og slet ikke for nogle point her, men hvis du går i gang og løber ind i nogle problemmer, så skal jeg da gerne hjælpe hvis du stiller spørgsmålet med al relevant info.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester