Data van txt file in database zetten
Als beginnende php-er kom ik een probleem tegen waarvan ik denk dat het veel handiger kan.
Ik heb een weerstation dat om de zoveel minuten een bestand met data upload naar mijn website (een voorbeeld: http://www.weerstationburgum.nl/weerdata/weerdata.txt).
Nu wil ik (een deel van) de variabelen uit de txt-file in een MySQL database opslaan. Ik doe het nu zo:
Quote:
$openen = fopen ("http://www.weerstationburgum.nl/weerdata/weerdata.txt", "rb");
$contents = "";
do
{
$data = fread($openen, 8192);
if (strlen($data) == 0)
break;
$contents .= $data;
} while(true);
@fclose ($openen);
$begin = "BOF";
$eind = "EOF";
$data = eregi("$BOF(.*)$EOF", $contents, $tekst1);
$destring=$tekst1[1];
// zoek temperatuur
$startpos = strpos($destring, "outsideTemp")+15;
$totaalpos = 3;
$weertemperatuur = substr($destring, $startpos, $totaalpos);
// hoogste en laagste temperatuur
$startpos = strpos($destring, "hiOutsideTemp")+17;
$totaalpos = 4;
$weertemperatuurhoog = substr($destring, $startpos, $totaalpos);
$startpos = strpos($destring, "hiOutsideTempTime")+21;
$totaalpos = 5;
$weertemperatuurhoogtijd= substr($destring, $startpos, $totaalpos);
etc etc
$contents = "";
do
{
$data = fread($openen, 8192);
if (strlen($data) == 0)
break;
$contents .= $data;
} while(true);
@fclose ($openen);
$begin = "BOF";
$eind = "EOF";
$data = eregi("$BOF(.*)$EOF", $contents, $tekst1);
$destring=$tekst1[1];
// zoek temperatuur
$startpos = strpos($destring, "outsideTemp")+15;
$totaalpos = 3;
$weertemperatuur = substr($destring, $startpos, $totaalpos);
// hoogste en laagste temperatuur
$startpos = strpos($destring, "hiOutsideTemp")+17;
$totaalpos = 4;
$weertemperatuurhoog = substr($destring, $startpos, $totaalpos);
$startpos = strpos($destring, "hiOutsideTempTime")+21;
$totaalpos = 5;
$weertemperatuurhoogtijd= substr($destring, $startpos, $totaalpos);
etc etc
De gestripte variabelen sla ik op in de database. Volgens mij moet het veel makkelijk/handiger kunnen of is er één of andere functie voor. Vooral omdat de naam van de variabelen al in de tekst-file zitten.
Wie zou me willen helpen of een tip willen geven?
Alvast bedankt!
fopen
waarom via de url als het bestand rechtstreeks te opene is
op welke manieren kan je de data vanuit het weerstantion exporteren, want als je een seperator kunt gebruiken is dat ook veel makkelijkere te verwerken
Gewijzigd op 27/03/2011 17:46:27 door Noppes Homeland
Quote:
$date = "27-03-11";
$time = "16:17";
$stationDate = "27-03-11";
$stationTime = "16:17";
$utcdate = "27-03-11";
$utctime = "14:17";
$time = "16:17";
$stationDate = "27-03-11";
$stationTime = "16:17";
$utcdate = "27-03-11";
$utctime = "14:17";
En de " = " zit ook standaard tussen de "varaiabele" en de "waarde".
Ik zal nog eens uitzoeken of het ook in een andere vorm geëxporteerd kan worden.
Eindelijk een situatie gevonden waar het van pas zou kunnen komen.
je kan BOF replacen met < ? php
en de EOF met ? >
wegschrijven en includen
en eval gewoon links laten liggen, niet aan denken
Gewijzigd op 27/03/2011 21:35:34 door Noppes Homeland
Ik zou gaan voor eval. Dan bespaar je het wehschrijven.
Joris van Rijn op 27/03/2011 21:31:42:
Ik zou gaan voor eval. Dan bespaar je het wehschrijven.
Neuh, eval is niet nodig...
Ik ben nu wel benieuwd wat precies deze data genereert.
Karl Karl op 27/03/2011 23:13:36:
Neuh, eval is niet nodig...
Ik ben nu wel benieuwd wat precies deze data genereert.
Joris van Rijn op 27/03/2011 21:31:42:
Ik zou gaan voor eval. Dan bespaar je het wehschrijven.
Neuh, eval is niet nodig...
Ik ben nu wel benieuwd wat precies deze data genereert.
De functie eval ken ik niet, zal eens kijken wat ik daarmee kan doen.
Even ter verduidelijking. De software van mijn weerstation stuurt elke 5 minuten de meest actuele meetgegevens naar de server. De variabelen in die file wil ik dus in de database opslaan, zodat ik daarmee queries kan doen om de gegevens weer te laten zien.
De vraag blijft, is er een makkelijker manier dan met het uitlezen van die substrings, zoals ik het nu doe....
Gewijzigd op 28/03/2011 10:39:06 door Eelco Klomp
Eval wil je niet gebruiken. Dat is gewoon niet nodig. Welke software heb je dan draaien op je weerstation?
Karl Karl op 28/03/2011 10:55:32:
Eval wil je niet gebruiken. Dat is gewoon niet nodig. Welke software heb je dan draaien op je weerstation?
Na wat gepruts ben ik op het volgende gekomen wat in ieder geval handiger is dan ik had. Kan vast wel handiger, maar toch....
Quote:
$begin = "BOF";
$eind = "EOF";
$data = eregi("$begin(.*)$eind", $contents, $tekst1);
$destring=$tekst1[1];
$destring = explode(";", $destring);
$i=0;
$meting = "";
foreach ($destring as $parameter) {
$positie = stripos($destring[$i], " = \"");
$parameter = substr($parameter, 2, $positie-2);
$positiebegin = stripos($destring[$i], " = \"");
$meting = substr($destring[$i], $positiebegin+4, -1);
echo "INSERT INTO table_name ($parameter) VALUES (\"$meting\")<br />\n";
$i++;
}
$eind = "EOF";
$data = eregi("$begin(.*)$eind", $contents, $tekst1);
$destring=$tekst1[1];
$destring = explode(";", $destring);
$i=0;
$meting = "";
foreach ($destring as $parameter) {
$positie = stripos($destring[$i], " = \"");
$parameter = substr($parameter, 2, $positie-2);
$positiebegin = stripos($destring[$i], " = \"");
$meting = substr($destring[$i], $positiebegin+4, -1);
echo "INSERT INTO table_name ($parameter) VALUES (\"$meting\")<br />\n";
$i++;
}
Ik gebruik Meteohub als koppeling tussen mijn weerstation en de website.
Na me daar ook wat meer in verdiept te hebben, blijkt dat je vanuit Meteohub bestanden automatisch kunt uploaden waarbij je zelf de opmaak bepaald. Kortom je kunt html en php bestanden maken vanuit die software. Bovenstaande dus eigenlijk niet eens meer nodig, alleen nog een cron draaiende krijgen....
Karl Karl op 28/03/2011 10:55:32:
Eval wil je niet gebruiken. Dat is gewoon niet nodig. Welke software heb je dan draaien op je weerstation?
Wat is er anders aan eval() dan aan wegschrijven?
Je doet precies hetzelfde, je slaat het alleen op.
Eelco Klomp op 28/03/2011 19:13:47:
Na wat gepruts ben ik op het volgende gekomen wat in ieder geval handiger is dan ik had. Kan vast wel handiger, maar toch....
Ik gebruik Meteohub als koppeling tussen mijn weerstation en de website.
Na me daar ook wat meer in verdiept te hebben, blijkt dat je vanuit Meteohub bestanden automatisch kunt uploaden waarbij je zelf de opmaak bepaald. Kortom je kunt html en php bestanden maken vanuit die software. Bovenstaande dus eigenlijk niet eens meer nodig, alleen nog een cron draaiende krijgen....
Karl Karl op 28/03/2011 10:55:32:
Eval wil je niet gebruiken. Dat is gewoon niet nodig. Welke software heb je dan draaien op je weerstation?
Na wat gepruts ben ik op het volgende gekomen wat in ieder geval handiger is dan ik had. Kan vast wel handiger, maar toch....
Quote:
$begin = "BOF";
$eind = "EOF";
$data = eregi("$begin(.*)$eind", $contents, $tekst1);
$destring=$tekst1[1];
$destring = explode(";", $destring);
$i=0;
$meting = "";
foreach ($destring as $parameter) {
$positie = stripos($destring[$i], " = \"");
$parameter = substr($parameter, 2, $positie-2);
$positiebegin = stripos($destring[$i], " = \"");
$meting = substr($destring[$i], $positiebegin+4, -1);
echo "INSERT INTO table_name ($parameter) VALUES (\"$meting\")<br />\n";
$i++;
}
$eind = "EOF";
$data = eregi("$begin(.*)$eind", $contents, $tekst1);
$destring=$tekst1[1];
$destring = explode(";", $destring);
$i=0;
$meting = "";
foreach ($destring as $parameter) {
$positie = stripos($destring[$i], " = \"");
$parameter = substr($parameter, 2, $positie-2);
$positiebegin = stripos($destring[$i], " = \"");
$meting = substr($destring[$i], $positiebegin+4, -1);
echo "INSERT INTO table_name ($parameter) VALUES (\"$meting\")<br />\n";
$i++;
}
Ik gebruik Meteohub als koppeling tussen mijn weerstation en de website.
Na me daar ook wat meer in verdiept te hebben, blijkt dat je vanuit Meteohub bestanden automatisch kunt uploaden waarbij je zelf de opmaak bepaald. Kortom je kunt html en php bestanden maken vanuit die software. Bovenstaande dus eigenlijk niet eens meer nodig, alleen nog een cron draaiende krijgen....
Inderdaad, ik had al zo'n vermoeden dat je zelf een template kan aanmaken. Je zou dus ook xml ofzo of je eigen formaat kunnen maken, of alles op een losse regel zetten waardoor je alles per regel kan inlezen of parse_str gebruiken....
Joris van Rijn op 28/03/2011 19:54:07:
Wat is er anders aan eval() dan aan wegschrijven?
Je doet precies hetzelfde, je slaat het alleen op.
Karl Karl op 28/03/2011 10:55:32:
Eval wil je niet gebruiken. Dat is gewoon niet nodig. Welke software heb je dan draaien op je weerstation?
Wat is er anders aan eval() dan aan wegschrijven?
Je doet precies hetzelfde, je slaat het alleen op.
Eval is evil. Eigenlijk is er altijd wel een betere oplossing als je denkt dat je bij eval uitgekomen bent. Ik gok dat je zelfs Jelmer's shorttags wrapper kunt gebruiken.
Ik draai samen met mijn vader een weerstation. Hij het station en het exporteren van de data, ik de site (ff reclame: http://www.grandix.nl/). Wij gebruiken WeatherLink als software op een lokale PC die via de seriele koppeling de data van de Davis VP2 exporteert naar een htm-bestand. Deze wordt eens per vijf minuten gegenereerd en verzonden naar een webstek. Onder andere hetweeractueel.nl (HWA - aanrader om mee te doen!) gebruikt dit bestand. Het bestand is dan dus ook gemaakt op aanleverspecificaties van HWA. Je krijgt dan zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
BOF
$date = "29-03-11";
$time = "10:35";
$stationDate = "29-03-11";
$stationTime = "10:25";
$utcTime = " 8:35";
$utcDate = "29-03-11";
$tempUnit = "C";
$humUnit = "% ";
$barUnit = "hPa";
$rainUnit = "mm";
$rateUnit = "mm/hr";
$windUnit = "km/hr";
$windDirection = "SSE";
$sunriseTime = " 7:25";
$sunsetTime = "20:10";
$outsideTemp = "8.1";
$hiOutsideTemp = "8.1";
$lowOutsideTemp = "1.8";
$lowOutsideTempTime = " 6:57";
$hiOutsideTempTime = "10:24";
$lowMonthlyOutsideTemp = "-1.9";
$hiMonthlyOutsideTemp = "17.6";
$hiYearlyOutsideTemp = "17.6";
$lowYearlyOutsideTemp = "-4.7";
$outsideHumidity = "84";
$lowHumidity = "84";
$hiHumidity = "98";
$lowHumTime = "10:16";
$hiHumTime = " 9:21";
$hiMonthlyHumidity = "100";
$lowMonthlyHumidity = "35";
$hiYearlyHumidity = "100";
$lowYearlyHumidity = "35";
$outsideDewPt = "5.6";
$hiDewpoint = "6.1";
$lowDewpoint = "1.1";
$hiDewpointTime = "10:04";
$lowDewpointTime = " 5:54";
$hiMonthlyDewpoint = "11.1";
$lowMonthlyDewpoint = "-6.7";
$hiYearlyDewpoint = "11.1";
$lowYearlyDewpoint = "-6.7";
$windSpeed = "0.0";
$wind10Avg = "3.2";
$hiWindSpeed = "11.3";
$hiWindSpeedTime = "10:06";
$hiMonthlyWindSpeed = "69.2";
$hiYearlyWindSpeed = "82.1";
$windDir = "148";
$windDirection = "SSE";
$windChill = "8.1";
$lowWindchill = "1.7";
$lowWindchillTime = " 6:46";
$lowMonthlyWindchill = "-5.6";
$lowYearlyWindchill = "-7.8";
$outsideHeatIndex = "8.1";
$hiHeatindex = "8.3";
$hiHeatindexTime = "10:24";
$hiMonthlyHeatindex = "16.7";
$hiYearlyHeatindex = "16.7";
$thw = "8.1";
$hiTHSWindex = "---";
$hiTHSWindexTime = "---";
$hiMonthlyTHSWindex = "---";
$hiYearlyTHSWindex = "---";
$barometer = "1015.8";
$barTrend = "Steady";
$lowBarometer = "1015.5";
$hiBarometer = "1017.3";
$lowMonthlyBarometer = "1000.2";
$hiMonthlyBarometer = "1041.4";
$lowYearlyBarometer = "991.1";
$hiYearlyBarometer = "1041.4";
$lowBarometerTime = " 8:29";
$hiBarometerTime = " 0:35";
$dailyRain = "0.0";
$stormRain = "0.0";
$monthlyRain = "13.6";
$totalRain = "156.8";
$rainRate = "0.0";
$hiRainRate = "0.0";
$hiRainRateTime = "----";
$hiRainRateHour = "0.0";
$hiMonthlyRainRate = "3.4";
$hiYearlyRainRate = "8.8";
$solarRad = "---";
$hiSolarRad = "---";
$hiSolarRadTime = "---";
$hiMonthlySolarRad = "---";
$hiYearlySolarRad = "---";
$uv = "---";
$hiUV = "---";
$hiUVTime = "---";
$hiMonthlyUV = "---";
$hiYearlyUV = "---";
$insideTemp = "17.3";
$hiInsideTemp = "18.6";
$lowInsideTemp = "17.2";
$hiInsideTempTime = " 0:00";
$lowInsideTempTime = " 8:14";
$hiMonthlyInsideTemp = "23.4";
$lowMonthlyInsideTemp = "15.7";
$hiYearlyInsideTemp = "23.4";
$lowYearlyInsideTemp = "15.7";
$insideHumidity = "47";
$hiInsideHumidity = "54";
$lowInsideHumidity = "46";
$hiInsideHumidityTime = " 0:24";
$lowInsideHumidityTime = "10:24";
$hiMonthlyInsideHumidity = "54";
$lowMonthlyInsideHumidity = "27";
$hiYearlyInsideHumidity = "58";
$lowYearlyInsideHumidity = "27";
$insideDewPt = "5.9";
$insideHeatIndex = "16.2";
$forecast = " Increasing clouds with little temperature change. ";
EOF
$date = "29-03-11";
$time = "10:35";
$stationDate = "29-03-11";
$stationTime = "10:25";
$utcTime = " 8:35";
$utcDate = "29-03-11";
$tempUnit = "C";
$humUnit = "% ";
$barUnit = "hPa";
$rainUnit = "mm";
$rateUnit = "mm/hr";
$windUnit = "km/hr";
$windDirection = "SSE";
$sunriseTime = " 7:25";
$sunsetTime = "20:10";
$outsideTemp = "8.1";
$hiOutsideTemp = "8.1";
$lowOutsideTemp = "1.8";
$lowOutsideTempTime = " 6:57";
$hiOutsideTempTime = "10:24";
$lowMonthlyOutsideTemp = "-1.9";
$hiMonthlyOutsideTemp = "17.6";
$hiYearlyOutsideTemp = "17.6";
$lowYearlyOutsideTemp = "-4.7";
$outsideHumidity = "84";
$lowHumidity = "84";
$hiHumidity = "98";
$lowHumTime = "10:16";
$hiHumTime = " 9:21";
$hiMonthlyHumidity = "100";
$lowMonthlyHumidity = "35";
$hiYearlyHumidity = "100";
$lowYearlyHumidity = "35";
$outsideDewPt = "5.6";
$hiDewpoint = "6.1";
$lowDewpoint = "1.1";
$hiDewpointTime = "10:04";
$lowDewpointTime = " 5:54";
$hiMonthlyDewpoint = "11.1";
$lowMonthlyDewpoint = "-6.7";
$hiYearlyDewpoint = "11.1";
$lowYearlyDewpoint = "-6.7";
$windSpeed = "0.0";
$wind10Avg = "3.2";
$hiWindSpeed = "11.3";
$hiWindSpeedTime = "10:06";
$hiMonthlyWindSpeed = "69.2";
$hiYearlyWindSpeed = "82.1";
$windDir = "148";
$windDirection = "SSE";
$windChill = "8.1";
$lowWindchill = "1.7";
$lowWindchillTime = " 6:46";
$lowMonthlyWindchill = "-5.6";
$lowYearlyWindchill = "-7.8";
$outsideHeatIndex = "8.1";
$hiHeatindex = "8.3";
$hiHeatindexTime = "10:24";
$hiMonthlyHeatindex = "16.7";
$hiYearlyHeatindex = "16.7";
$thw = "8.1";
$hiTHSWindex = "---";
$hiTHSWindexTime = "---";
$hiMonthlyTHSWindex = "---";
$hiYearlyTHSWindex = "---";
$barometer = "1015.8";
$barTrend = "Steady";
$lowBarometer = "1015.5";
$hiBarometer = "1017.3";
$lowMonthlyBarometer = "1000.2";
$hiMonthlyBarometer = "1041.4";
$lowYearlyBarometer = "991.1";
$hiYearlyBarometer = "1041.4";
$lowBarometerTime = " 8:29";
$hiBarometerTime = " 0:35";
$dailyRain = "0.0";
$stormRain = "0.0";
$monthlyRain = "13.6";
$totalRain = "156.8";
$rainRate = "0.0";
$hiRainRate = "0.0";
$hiRainRateTime = "----";
$hiRainRateHour = "0.0";
$hiMonthlyRainRate = "3.4";
$hiYearlyRainRate = "8.8";
$solarRad = "---";
$hiSolarRad = "---";
$hiSolarRadTime = "---";
$hiMonthlySolarRad = "---";
$hiYearlySolarRad = "---";
$uv = "---";
$hiUV = "---";
$hiUVTime = "---";
$hiMonthlyUV = "---";
$hiYearlyUV = "---";
$insideTemp = "17.3";
$hiInsideTemp = "18.6";
$lowInsideTemp = "17.2";
$hiInsideTempTime = " 0:00";
$lowInsideTempTime = " 8:14";
$hiMonthlyInsideTemp = "23.4";
$lowMonthlyInsideTemp = "15.7";
$hiYearlyInsideTemp = "23.4";
$lowYearlyInsideTemp = "15.7";
$insideHumidity = "47";
$hiInsideHumidity = "54";
$lowInsideHumidity = "46";
$hiInsideHumidityTime = " 0:24";
$lowInsideHumidityTime = "10:24";
$hiMonthlyInsideHumidity = "54";
$lowMonthlyInsideHumidity = "27";
$hiYearlyInsideHumidity = "58";
$lowYearlyInsideHumidity = "27";
$insideDewPt = "5.9";
$insideHeatIndex = "16.2";
$forecast = " Increasing clouds with little temperature change. ";
EOF
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$dataUrl = 'http://www.webstek.nl/openweerdata.htm';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
$dataUrl = 'http://www.webstek.nl/openweerdata.htm';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
Er staat geen commentaar in het script, dus even kort wat er gebeurt:
- De url van de export gaat in een var;
- ik maak een array met elke keer als key de kolomnaam in de tabel van de DB, met als waarde de daarbij corresponderende variabele uit de export. Deze gebruik ik later om te matchen;
- ik maak vervolgens een nieuwe array aan en lees de data in;
- als er data is gevonden ga ik op basis van PHP_EOL het bestand splitsen;
- dan loop ik door de array die uit het splitsen komt, elke regel opnieuw. Daarbij loop ik dan ook door de eerste array heen waarbij ik test (de ereg()-functie) of in de regel de gevraagde waarde voorkomt. Als de gevonden is wordt die in de tweede array gezet.
Die tweede array kan je daarna gebruiken. Daar kan je bijvoorbeeld $valueArray['wda_forecast'] gebruiken om de voorspelling te zien.
Ik zie nu dat ik nog de ereg()-functie gebruik. Dit moet aangepast worden, omdat die deprecated is.
Denk wel dat je hiermee een aardige stap vooruit kan zetten.
Is dat BOF en EOF niet om te zetten bij de bron zodat je de php begin en eind tags erin kan configureren? Dan ben je in 1x klaar met een include.
Elwin Fratsloos op 29/03/2011 10:45:37:
HWA - aanrader om mee te doen
HWA - aanrader om mee te doen
Jaaa! Ik ga ook mee doen, maar mag nog niet... :-( eerst twee maanden stabiel draaien... Dat bestand wat ik aangaf kan inderdaad ook door HWA gelezen worden... Vandaar dat ik het ook voor mijn eigen site kan gebruiken...
Elwin Fratsloos op 29/03/2011 10:45:37:
Er staat geen commentaar in het script, dus even kort wat er gebeurt:
- De url van de export gaat in een var;
- ik maak een array met elke keer als key de kolomnaam in de tabel van de DB, met als waarde de daarbij corresponderende variabele uit de export. Deze gebruik ik later om te matchen;
- ik maak vervolgens een nieuwe array aan en lees de data in;
- als er data is gevonden ga ik op basis van PHP_EOL het bestand splitsen;
- dan loop ik door de array die uit het splitsen komt, elke regel opnieuw. Daarbij loop ik dan ook door de eerste array heen waarbij ik test (de ereg()-functie) of in de regel de gevraagde waarde voorkomt. Als de gevonden is wordt die in de tweede array gezet.
Die tweede array kan je daarna gebruiken. Daar kan je bijvoorbeeld $valueArray['wda_forecast'] gebruiken om de voorspelling te zien.
Ik zie nu dat ik nog de ereg()-functie gebruik. Dit moet aangepast worden, omdat die deprecated is.
Denk wel dat je hiermee een aardige stap vooruit kan zetten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$dataUrl = 'http://www.webstek.nl/openweerdata.htm';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
$dataUrl = 'http://www.webstek.nl/openweerdata.htm';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
Er staat geen commentaar in het script, dus even kort wat er gebeurt:
- De url van de export gaat in een var;
- ik maak een array met elke keer als key de kolomnaam in de tabel van de DB, met als waarde de daarbij corresponderende variabele uit de export. Deze gebruik ik later om te matchen;
- ik maak vervolgens een nieuwe array aan en lees de data in;
- als er data is gevonden ga ik op basis van PHP_EOL het bestand splitsen;
- dan loop ik door de array die uit het splitsen komt, elke regel opnieuw. Daarbij loop ik dan ook door de eerste array heen waarbij ik test (de ereg()-functie) of in de regel de gevraagde waarde voorkomt. Als de gevonden is wordt die in de tweede array gezet.
Die tweede array kan je daarna gebruiken. Daar kan je bijvoorbeeld $valueArray['wda_forecast'] gebruiken om de voorspelling te zien.
Ik zie nu dat ik nog de ereg()-functie gebruik. Dit moet aangepast worden, omdat die deprecated is.
Denk wel dat je hiermee een aardige stap vooruit kan zetten.
Je script is voor mij ook interessant! Jammer genoeg krijg ik het niet aan de praat, Ik probeer eerst met een "echo" maar kan het niet voor elkaar krijgen om de waarden uit die array te krijgen. Hoe lees je die uit?
Edit:
Even offtopic; als je aan HWA mee doet moet je ook meedoen aan de samenwerking met Meteo Consult en het KNMI. Gewoon omdat het kan, maar ook omdat je via het Meteo Consult een op jouw locatie aangepast MOS-verwachting kan krijgen in XML. Dan kan je zoiets als http://grandix.nl/verwachting/oud-beijerland/ maken.
Edit 2:
Ik kan je data gewoon inlezen hoor.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
$dataUrl = 'http://www.weerstationburgum.nl/weerdata/weerdata.txt';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
print_r($valueArray);
?>
$dataUrl = 'http://www.weerstationburgum.nl/weerdata/weerdata.txt';
$dataArray = array(
'wda_date' => 'date',
'wda_time' => 'time',
'wda_station_date' => 'stationDate',
'wda_station_time' => 'stationTime',
'wda_utc_date' => 'utcDate',
'wda_utc_time' => 'utcTime',
'wda_wind_direction' => 'windDir',
'wda_wind_direction_text' => 'windDirection',
'wda_wind_speed' => 'windSpeed',
'wda_wind_speed_max' => 'hiWindSpeed',
'wda_wind_speed_max_time' => 'hiWindSpeedTime',
'wda_wind_chill' => 'windChill',
'wda_time_sunrise' => 'sunriseTime',
'wda_time_sunset' => 'sunsetTime',
'wda_temp_outside' => 'outsideTemp',
'wda_temp_inside' => 'insideTemp',
'wda_hum_outside' => 'outsideHumidity',
'wda_hum_inside' => 'insideHumidity',
'wda_dew_outside' => 'outsideDewPt',
'wda_dew_inside' => 'insideDewPt',
'wda_barometer' => 'barometer',
'wda_barometer_trend' => 'barTrend',
'wda_rain_daily' => 'dailyRain',
'wda_heatindex_outside' => 'outsideHeatIndex',
'wda_heatindex_inside' => 'insideHeatIndex',
'wda_forecast' => 'forecast'
);
$valueArray = array();
$content = file_get_contents($dataUrl);
if ($content !== false) {
$regels = explode(PHP_EOL,$content);
foreach($regels as $regel) {
// Controleer met RegEx of de data voorkomt
foreach($dataArray as $data => $value) {
if(ereg('\$'.$value.' = \"(.*)\"',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
print_r($valueArray);
?>
That's all! :)
Gewijzigd op 30/03/2011 12:00:27 door Elwin - Fratsloos