Hallo liebe Symcon Gemeinde,
ich brauche mal wieder Eure Hilfe.
Und zwar möchte ich gerne Werte, von einer Homepage in Variablen schreiben.
Da aber die Werte, immer verschiedene Schlüssel haben können, muss ich danach suchen können.
Das ist aber mein Problem, ich habe schon viele Skripte ausprobiert, der Wert wird aber nie gefunden, obwohl er vorhanden ist.
Hier mein Skript mit dem Ergebnis:
<?php
$curl = curl_init('https://www.wgmn-hamburg.de/daten-2/ReportAktuelleMesswerte-WA-2.html'); //Warndienst Binnenhochwasser Hamburg
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/61.0.3163.100 Safari/537.36');
$page = curl_exec($curl);
//print_r($page);
if(curl_errno($curl)) // check for execution errors
{
echo 'Scraper error: ' . curl_error($curl);
exit;
}
curl_close($curl);
$content = get_mark($page, '<td>*</td>');
$truebung = str_replace(' ', '', get_mark($page, '<td>*</td>' )[5]); // ' ' = Leerzeichen ersetzen durch ''
//var_dump ($content);
$temp3 = ($content[4]);
var_dump ($temp3).PHP_EOL;
$pos = array_search('pH-Wert', $content, true);
// Abfrage: Wurde "april" im Array gefunden?
// Falls ja, hat $pos einen Wert zwischen 0 und 3 (Schlüssel des ersten und letzten Werts im Array)
// Falls nein, ist $pos false.
// Bei der Bedingung muss darauf geachtet werden, immer "=== false" und NICHT "== false" zu schreiben, da "== false" auch
// dann true ergibt, wenn der gefundene Wert den Schlüssel 0 hat.
if ($pos===false) {
echo('"pH-Wert" wurde nicht im Array gefunden.').PHP_EOL;
} else {
echo('"pH-Wert" hat im Array den Schlüssel '.$pos).PHP_EOL;
}
var_dump ($content);
function get_mark($string,$mark) {
$ausgabe = array();
$template = explode("*",$mark);
$mark = $template[0];
$end = $template[1];
$string = strstr($string,$mark);
$temp = explode($mark,$string);
$a = 1;
foreach ($temp as $tempx) {
$tempx = explode($end,$tempx);
$tempx = $tempx[0];
if ($tempx) {
array_push ($ausgabe,$tempx);
}
}
return $ausgabe;
}
Und hier das Ergebnis davon:
string(11) "
pH-Wert
"
---------------------------------------------------------------
"pH-Wert" wurde nicht im Array gefunden.
----------------------------------------------------------------
array(32) {
[0]=>
string(41) "
Wandsbeker Allee - Aktuelle Messwerte
"
[1]=>
string(8) "
"
[2]=>
string(8) "
"
[3]=>
string(20) "
05.06.2025 07:00
"
[4]=>
string(11) "
pH-Wert
"
[5]=>
string(13) "
8.3
"
[6]=>
string(8) "
ohne
"
[7]=>
string(20) "
05.06.2025 07:00
"
[8]=>
string(11) "
Trübung
"
[9]=>
string(13) "
23.0
"
[10]=>
string(7) "
FNU
"
[11]=>
string(20) "
05.06.2025 07:00
"
[12]=>
string(20) "
Wassertemperatur
"
[13]=>
string(13) "
20.5
"
[14]=>
string(6) "
°C
"
[15]=>
string(20) "
05.06.2025 07:00
"
[16]=>
string(23) "
Sauerstoffsättigung
"
[17]=>
string(13) "
103.9
"
[18]=>
string(5) "
%
"
[19]=>
string(20) "
05.06.2025 07:00
"
[20]=>
string(27) "
Sauerstoffkonzentration
"
[21]=>
string(13) "
9.3
"
[22]=>
string(8) "
mg/l
"
[23]=>
string(16) "
WGMN-Service
"
[24]=>
string(8) "
"
[25]=>
string(8) "
"
[26]=>
string(70) "
Messstation Wandsbeker Allee an der Wandse an der Wandsbeker Allee
"
[27]=>
string(8) "
"
[28]=>
string(8) "
"
[29]=>
string(158) "
Die aktuellen Messwerte der Station Wandsbeker Allee täglich mehrmals frisch! Wir stellen die Messdaten für Sie morgens, mittags und nachmittags bereit.
"
[30]=>
string(8) "
"
[31]=>
string(8) "
"
}
Vielen Dank für die Hilfe.
Hein09