Hallo
Die curl Geschichte simuliert über PHP gewissermassen einen Browser und liest den Quelltext so ein, dass man ihn in PHP weiter verarbeiten kann. Die einzelnen curl-Optionen kannst du ja selber nachlesen.
Wie schon gesagt, gehe ich von einer Seite aus, die sich nicht dynamisch verändert, also nicht mal 120 und mal 170 Zeilen hat sondern immer die gleiche Ausgabe generiert.
$werte = explode("\n",$query);
$query beinhalten die gesamte Ausgabe der Webseite. Wenn man sich mal den Quellcode ansieht, sieht man, dass der Inhalt aus mehreren Zeilen besteht.
Das explode zerlegt die Seite in einzelne Zeilen. \n ist dabei ein Umbruch in eine neue Zeile. Jedes Mal, wenn ein Umbruch ausgegeben wird, lese ich die Zeile in eine neue Variable ein.
Ist die Seite immer gleich, stehen auch die Werte immer in der gleichen Zeile (logisch denke ich).
Deshalb kann ich genau sagen, dass in Zeile 51 bis 60 deine Werte liegen, die du abfragen möchtest. Ändert sich der Aufbau nicht, liegen die Werte IMMER in diesen Zeilen.
$werte = array_pad($werte,80,"");
Ist eine reine Vorsichtsmassnahme. Weil ich weiter unten in der Schleife auf die Variablen $werte[51] bis $werte[60] zugreife, stelle ich sicher, dass es die Variablen auch gibt, indem ich einfach alles bis $werte[79] mit Leer auffülle, sollte es die Variablen mal nicht geben. Es könnte z.B. mal vorkommen, dass der Server nicht erreichbar ist. Dann würde die Ausgabe der Variablen $ergebnis einen Fehler verursachen, weil sie auf Inhalte ($werte[51]) zugreifen möchte, es diese Variable aber nicht gibt.
Man beachte meine bestechende Logik und unglaubliche weise Voraussicht: Zerlegt man NICHTS in Zeilen, kommt wieder NICHTS dabei raus.;ugl
for($i = 51; $i <=60; $i++)
{
$ergebnis[] = strip_tags(trim($werte[$i]));
}
Macht nichts anderes als ein neues Array befüllen, und zwar mit den Inhalten der Zeilen 51 bis 60. Bei dieser Gelegenheit entferne ich gleich alle HTML-Zeichen wie z.B. deine Tabellen-Tags und im Pfusch auch noch überflüssige Leerzeichen (durch strip_tags() werden alle html-Tags entfernt, trim() entfernt unnötige Leerzeichen vor und nach dem Text).
Woher weiss man nun, in welcher Zeile was steht?
Dazu nochmal ein kleiner Code, der die gesamte Webseite ausliest und komplett Zeilenweise ausgibt.
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="refresh" content="5"/>
<meta http-equiv="cache-control" content="no-cache">
<title>IQS WebServer</title>
</head>
<body>
<?PHP
$url = "http://zerspanung.dyndns.info/";
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
$query = curl_exec($curl_handle);
curl_close($curl_handle);
$werte = explode("\n",$query);
$werte = array_pad($werte,80,"");
for($i = 1; $i <= count($werte); $i++)
{
$ergebnis[] = strip_tags(trim($werte[$i]));
}
echo "<pre>";
print_r($ergebnis);
echo "</pre>";
?>
</body>
</html>
Da brauchst du eigenlich nur noch ablesen.
Die Uhrzeil steht z.B. in der Variablen $ergebnis[20], der Controller in der Variablen $ergebnis[17].
echo "<pre>";
print_r($ergebnis);
echo "</pre>";
formatiert die Ausgabe nur etwas schöner lesebar, damit die Ergebnisse schön untereinander stehen. Dass ich bei deinem Code in der Schleife nur die Zeilen 51 bis 60 durchlaufe sind reine Sparmassnahmen an den Variablen. Wenn du auch die Uhrzeit willst musst du diese Schleife nehmen:
PHP:
for($i = 1; $i <= count($werte); $i++)
{
$ergebnis[] = strip_tags(trim($werte[$i]));
}