CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
20.02.2012, 13:17:09
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
Werte aus einer Tabelle von einer anderen Webseite auslesen?
Hallo,
ich möchte gerne von einer anderen Webseite alle Werte einer Tabelle auslesen. Letztendlich brauch ich nur ein paar Werte aus der Tabelle...
Hier der Code von der Tabelle:
PHP-Code:
<tbody><tr><th colspan="2" class="round-top">Heizung</th></tr>
<tr class="even"><td class="key ialigned">Istwert Heizkreis 1<div class="info"><div style="margin-top: -30.5px;" class="text"><h3></h3><p>Gültige Werte: Eingabe zwischen 10,0 und 65,0 °C.</p></div></div></td><td class="value">45 °C</td></tr>
<tr class="odd"><td class="key ialigned">Sollwert Heizkreis 1<div class="info"><div style="margin-top: -30.5px;" class="text"><h3></h3><p>Gültige Werte: Eingabe zwischen 10,0 und 65,0 °C.</p></div></div></td><td class="value">45 °C</td></tr>
<tr class="even"><td class="key">Istwert Heizkreis 2</td><td class="value">45 °C</td></tr>
<tr class="odd"><td class="key">Sollwert Heizkreis 2</td><td class="value">45 °C</td></tr>
<tr class="even"><td class="key round-leftbottom">Vorlauftemparatur</td><td class="value round-rightbottom">45 °C</td></tr>
</tbody>
Wie müsste ich das anstellen, das ich die Werte (45 Grad usw.) in eine Variable bekomme? Als quasi nur die Zahl ohne "°C".
Grüße
|
21.02.2012, 00:15:34
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Zitat:
Zitat von FRAD
Wie müsste ich das anstellen, das ich die Werte (45 Grad usw.) in eine Variable bekomme? Als quasi nur die Zahl ohne "°C".
|
Ganz einfach: Du lernst programmieren und schreibst Dir ein Script, welches genau das tut
Du benötigst dazu PCRE und cURL.
|
21.02.2012, 08:50:29
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Hi,
Grundkenntnisse habe ich, jedoch stellt sich diese Anforderung doch etwas schwieriger als gedacht vor.
Habe versucht mit diesem Code ans Ziel zu kommen:
PHP-Code:
require('simple_html_dom.php');
$table = array();
$html = file_get_html('http://localhost/test/se/info_werte.php.htm');
foreach($html->find('tr') as $row) {
$wert1 = $row->find('td',0)->plaintext;
$wert2 = $row->find('td',1)->plaintext;
$table[$wert1] = true;
}
echo '<pre>';
print_r($table);
echo '</pre>';
Bin ich da auf dem richtigen Weg?
Grüße
|
21.02.2012, 09:58:50
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Ich glaube, dass ich ein Stück weiter bin.... Nur die Frage, wie bekomme ich die einzelnen Werte in eine Variable? Wie müsste ich jetzt mit Strin_Replace arbetien, damit ich nur die Zahl in die Variable bekomme ohne den Rest?
PHP-Code:
<? $data = file_get_contents('http://localhost/test/se/info_werte.php.htm');
$regex = '/<td class="value*(.*)<\/td>/';
preg_match_all($regex,$data,$match);
var_export($match[0]);
?>
Ausgabe: Array ( [0] => 45 °C [1] => 45 °C [2] => 45 °C [3] => 45 °C [4] => 45 °C [5] => 45 °C [6] => 45 °C [7] => 25 °C [8] => 24 °C )
Was sagen die Profis dazu? Kann man das so machen? Ist das dann auch Fehlertolerant?
Geändert von FRAD (21.02.2012 um 10:09:18 Uhr)
|
21.02.2012, 10:43:25
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Wie ich die Werte in eine Variable bekomme habe ich herausgefunden:
PHP-Code:
$text1 = str_replace( "/[^0-9]+/", "", $match[0][0] ); echo $text1;
Nur leider erscheint immer noch: 45 °C Ziel soll es sein: 45
Wie bekomme ich die anderen Zeichen weg?
LÖSUNG: preg_replace anstatt str_replace !!!!
Hier der gesamte Code:
PHP-Code:
<? $data = file_get_contents('http://localhost/test/se/info_werte.php.htm'); $regex = '/<td class="value*(.*)<\/td>/'; preg_match_all($regex,$data,$match);
//var_export($match[0]);
//Tabelle Heizung $Istwert_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][0] ); echo 'Istwert Heizkreis 1: '.$Istwert_Heizkreis_1.'<br>'; $Sollwert_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][1] ); echo 'Sollwert Heizkreis 1 : '.$Sollwert_Heizkreis_1.'<br>'; $Istwert_Heizkreis_2 = preg_replace( "/[^0-9]+/", "", $match[0][2] ); echo 'Istwert Heizkreis 2: '.$Istwert_Heizkreis_2.'<br>'; $Sollwert_Heizkreis_2 = preg_replace( "/[^0-9]+/", "", $match[0][3] ); echo 'Sollwert Heizkreis 2: '.$Sollwert_Heizkreis_2.'<br>'; $Vorlauftemperatur = preg_replace( "/[^0-9]+/", "", $match[0][4] ); echo 'Vorlauftemparatur: '.$Vorlauftemperatur.'<br>';
//Tabelle Warmwasser $Warmwasser_Isttemperatur = preg_replace( "/[^0-9]+/", "", $match[0][5] ); echo 'Warmwasser-Isttemperatur: '.$Warmwasser_Isttemperatur.'<br>'; $Warmwasser_Solltemperatur = preg_replace( "/[^0-9]+/", "", $match[0][6] ); echo 'Warmwasser-Solltemperatur: '.$Warmwasser_Solltemperatur.'<br>';
//Tabelle Raumtemperatur $Raumtemperatur_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][7] ); echo 'Raumtemperatur Heizkreis 1: '.$Raumtemperatur_Heizkreis_1.'<br>'; $Raumsolltemperatur_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][8] ); echo 'Raumsolltemperatur Heizkreis 1: '.$Raumsolltemperatur_Heizkreis_1.'<br>'; ?>
Abschließende Frage: Was sagen die Profis dazu? Kann man das so machen? Ist das dann auch Fehlertolerant?
Geändert von FRAD (21.02.2012 um 10:57:44 Uhr)
|
21.02.2012, 11:19:28
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Hi
Zitat:
ich möchte gerne von einer anderen Webseite alle Werte einer Tabelle auslesen
|
Deine Tabelle? oder "Stiebel Eltron Reglersteuerung"? ;)
Pass deine Regex an dann brauchst du nix mehr machen
PHP-Code:
preg_match_all('/<td class="key[^>]*>(?P<name>[^<]*).*<\/td>[^<]*<td class="value">(?P<zahl>[^<][0-9]+)/',$html,$treffer);
print_r($treffer);
Geht bestimmt noch schicker ;)
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
21.02.2012, 14:06:08
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
war dein Code auf diesen hier bezogen??
PHP-Code:
<?
$data = file_get_contents('http://localhost/test/se/info_werte.php.htm');
$regex = '/<td class="value*(.*)<\/td>/';
preg_match_all($regex,$data,$match);
//var_export($match[0]);
//Tabelle Heizung
$Istwert_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][0] ); echo 'Istwert Heizkreis 1: '.$Istwert_Heizkreis_1.'<br>';
$Sollwert_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][1] ); echo 'Sollwert Heizkreis 1
: '.$Sollwert_Heizkreis_1.'<br>';
$Istwert_Heizkreis_2 = preg_replace( "/[^0-9]+/", "", $match[0][2] ); echo 'Istwert Heizkreis 2: '.$Istwert_Heizkreis_2.'<br>';
$Sollwert_Heizkreis_2 = preg_replace( "/[^0-9]+/", "", $match[0][3] ); echo 'Sollwert Heizkreis 2: '.$Sollwert_Heizkreis_2.'<br>';
$Vorlauftemperatur = preg_replace( "/[^0-9]+/", "", $match[0][4] ); echo 'Vorlauftemparatur: '.$Vorlauftemperatur.'<br>';
//Tabelle Warmwasser
$Warmwasser_Isttemperatur = preg_replace( "/[^0-9]+/", "", $match[0][5] ); echo 'Warmwasser-Isttemperatur: '.$Warmwasser_Isttemperatur.'<br>';
$Warmwasser_Solltemperatur = preg_replace( "/[^0-9]+/", "", $match[0][6] ); echo 'Warmwasser-Solltemperatur: '.$Warmwasser_Solltemperatur.'<br>';
//Tabelle Raumtemperatur
$Raumtemperatur_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][7] ); echo 'Raumtemperatur Heizkreis 1: '.$Raumtemperatur_Heizkreis_1.'<br>';
$Raumsolltemperatur_Heizkreis_1 = preg_replace( "/[^0-9]+/", "", $match[0][8] ); echo 'Raumsolltemperatur Heizkreis 1: '.$Raumsolltemperatur_Heizkreis_1.'<br>';
?>
Damit funktioniert alles - meine Frage war eigentlich nur, ob dies aus eurer Sicht eine saubere Lösung ist.
Grüße
|
21.02.2012, 14:47:01
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Hi
Zitat:
ob dies aus eurer Sicht eine saubere Lösung ist.
|
Aus meiner Nein!
Was ist wenn...sollte man sich immer fragen und je mehr man an
Möglichkeiten abfängt die eintreten könnten, desto weniger Fehler
passieren dann auch. Desweiteren schreibst du 9x
PHP-Code:
preg_replace( "/[^0-9]+/", "",...);
Nun zeige ich dir schon einen Lösungsansatz und du willst eine
Meinung zu deinem O.o
z.B.
Was ist wenn...
...der Host nicht erreichbar ist?
...nix zurück gegeben wird?
..."Istwert Heizkreis 1" nicht geliefert wird?
..."preg_match_all" nichts findet und $match kein Array ist?
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
21.02.2012, 15:17:04
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 45
Beiträge: 14
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
ahh verstanden... die ganzen preg_replace kann ich mir ersparen, da ich an einer Stelle bereits dafür sorge, dass die Werte entsprechend gezogen werden.
Meinst du, du kannst mir da mal einen kleinen Code schreiben?
Was ist wenn...
...der Host nicht erreichbar ist?
...nix zurück gegeben wird?
..."Istwert Heizkreis 1" nicht geliefert wird?
..."preg_match_all" nichts findet und $match kein Array ist?
Wäre echt Klasse!
|
21.02.2012, 16:30:06
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Werte aus einer Tabelle von einer anderen Webseite auslesen?
Hi
Zitat:
Meinst du, du kannst mir da mal einen kleinen Code schreiben?
|
könnt ich nur dann würd ich meine Arbeit liegen lassen und du lernst nix ;)
Versuch dich daran und dir wird hier geholfen...
Gewöhn dich nicht an Code Vorlagen.
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:59:42 Uhr.
|