Hoe txt bestand uitlezen met php variabelen en gebruiken op webpagina
Chris NVT op 20/08/2012 10:15:14:
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Gelukkig is er een [ignore] en [/ignore]-tag.
[ignore] <?php en ?>[/ignore]
Gewijzigd op 20/08/2012 10:19:36 door - Ariën -
Chris NVT op 20/08/2012 10:15:14:
Klopt, maar maakt dat weerstation zelf die variabelen zo aan dan? Of is dit van te voren opgegeven? Kun je de output in het weerstation aanpassen?
Anders kun je ook het volgende doen.
fopen (customtextout10.txt, a) (plaatst de pointer vooraan in het bestand) en daar < ?php in wegschrijven. Dan fopen (customtextout10.txt, a+) (plaatst de pointer achteraan in het bestand) en daar ? > wegschrijven. Daarna renamen en inlcuden.
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Erwin H op 20/08/2012 09:53:53:
@Chris, een php extensie geven heeft weinig zin als er geen php tags in staan. Alle content in een bestand dat NIET tussen de php tags staat wordt gezien als platte tekst en direct naar het output kanaal (lees browser) gedirigeerd. php kijkt naar de tags, niet naar de extensie.
Klopt, maar maakt dat weerstation zelf die variabelen zo aan dan? Of is dit van te voren opgegeven? Kun je de output in het weerstation aanpassen?
Anders kun je ook het volgende doen.
fopen (customtextout10.txt, a) (plaatst de pointer vooraan in het bestand) en daar < ?php in wegschrijven. Dan fopen (customtextout10.txt, a+) (plaatst de pointer achteraan in het bestand) en daar ? > wegschrijven. Daarna renamen en inlcuden.
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Beste oplossing inderdaad.
- Aar - op 20/08/2012 10:18:11:
Gelukkig is er een [ignore] en [/ignore]-tag.
[ignore] <?php en ?>[/ignore]
[/quote]
Thnx voor de tip! Die wist ik nog niet haha.
Chris NVT op 20/08/2012 10:15:14:
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Gelukkig is er een [ignore] en [/ignore]-tag.
[ignore] <?php en ?>[/ignore]
[/quote]
Thnx voor de tip! Die wist ik nog niet haha.
Eddy Erkelens op 20/08/2012 10:24:21:
Beste oplossing inderdaad.
Chris NVT op 20/08/2012 10:15:14:
Klopt, maar maakt dat weerstation zelf die variabelen zo aan dan? Of is dit van te voren opgegeven? Kun je de output in het weerstation aanpassen?
Anders kun je ook het volgende doen.
fopen (customtextout10.txt, a) (plaatst de pointer vooraan in het bestand) en daar < ?php in wegschrijven. Dan fopen (customtextout10.txt, a+) (plaatst de pointer achteraan in het bestand) en daar ? > wegschrijven. Daarna renamen en inlcuden.
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Erwin H op 20/08/2012 09:53:53:
@Chris, een php extensie geven heeft weinig zin als er geen php tags in staan. Alle content in een bestand dat NIET tussen de php tags staat wordt gezien als platte tekst en direct naar het output kanaal (lees browser) gedirigeerd. php kijkt naar de tags, niet naar de extensie.
Klopt, maar maakt dat weerstation zelf die variabelen zo aan dan? Of is dit van te voren opgegeven? Kun je de output in het weerstation aanpassen?
Anders kun je ook het volgende doen.
fopen (customtextout10.txt, a) (plaatst de pointer vooraan in het bestand) en daar < ?php in wegschrijven. Dan fopen (customtextout10.txt, a+) (plaatst de pointer achteraan in het bestand) en daar ? > wegschrijven. Daarna renamen en inlcuden.
De php tags uiteraard zonder de spatie want anders gooit hij het hier in een code blok :D
Beste oplossing inderdaad.
Met de toevoeging van de php tags aan de file lijkt het mij ook de minst bewerkelijke oplossing inderdaad. Anders kom je op de door Aar al eerder aangegeven regex toestanden. Ongetwijfeld mogelijk, maar zeker niet simpeler en waarschijnlijk ook niet sneller.
Ja is weatherdisplay, je kan ook je clientraw bestanden uploaden, die kan je met php zonder problemen uitlezen.
@ Stef yahoo: Is die website van jou? Hoe heb jij dit opgelost?
Toevoeging op 20/08/2012 17:43:48:
Hoe heb je bvb je wxtrends.php gemaakt? Dat is waarschijnlijk ook met zo'n bestand gedaan.
Toevoeging op 20/08/2012 22:34:30:
Kan je eens een voorbeeld posten van hoe je die kan gebruiken?
Toevoeging op 20/08/2012 22:39:35:
Kan je ook dit bestand van een andere website ophalen en includen en dan de bariabelen ervan gebruiken?
geeft je een array met alle variabelen van clientraw.
Ophalen van $arr[4] geeft je de temperatuur. Enzovoorts enzovoorts.
Toevoeging op 20/08/2012 22:42:00:
Van een andere website ophalen ruikt naar gegevens stelen. Daar geef ik geen tips over.
Toevoeging op 20/08/2012 22:46:26:
Dus dan kan ik bvb zeggen:
Temperatuur: $arr[4];
en dan krijg ik:
Temperatuur en dan de waarde daarachter?
Correct?
Wist niet zo snel hoe dat celsius teken ook al weer ging.
Toevoeging op 20/08/2012 23:22:37:
celsius teken = °C :-p
Het is uiteindelijk gelukt met customtextout10.txt. Nu wou ik vragen als het ook mogelijk is in php om kaartjes te maken van die gegevens. Dus bvb van de temperatuur: Hoe kouder hoe blauwer de kleur en hoe warmer hoe roder. Ik dacht eraan om de variabelen te koppelen met rgb waarden maar ik weet niet of dat een goede optie is. Kan er mij iemand helpen hierbij?
Grandix.nl.
Wij gebruiken ook Weather Display. En zo te zien zit je ook op HWA (die screenshot die je plaatste). De output van Weather Display die wij hebben is net wat anders, meer variabelen. Uitlezen doe ik om de 5 minuten waarbij ik de txt (in mijn geval een htm-bestand) inlees en de data in een database knal. De htm wordt via de ingebouwde FTP functie online gezet zodat mijn site er gebruik van kan maken, maar ook HWA en WUnderground.
Hiervoor gebruik ik onder andere de volgende code:
Je krijgt dan een array ($valueArray) met alle data die in het bestand stond en dan met de naam die je in $dataArray hebt opgegeven. Bijvoorbeeld $valueArray['wda_temp_wda_date'] bevat de waarde van $date uit de txt/htm.
Kaarten maken is nog best lastig, zeker als je van een land (of gebied) een kaart wilt maken. Je hebt immers meerdere gegevens nodig. Voor de kleuren lijkt mij dat je idee klopt. Variabelen een kleurwaarde geven. Bijvoorbeeld:
< -10 = donkerblauw
-10 - 0 = blauw
0 - 10 = lichtblauw
10 - 15 = groen
15 - 20 = geel
20 - 25 = oranje
25 - 30 = rood
> 30 = donkerrood
Ben wel benieuwd voor welk gebied je de kaart wilt gaan maken en welke gegevens je daarvoor hebt.
Cool. Nog wat weeramateurs. :) Zelf doe ik het samen met mijn vader (hij het station, ik de site): Wij gebruiken ook Weather Display. En zo te zien zit je ook op HWA (die screenshot die je plaatste). De output van Weather Display die wij hebben is net wat anders, meer variabelen. Uitlezen doe ik om de 5 minuten waarbij ik de txt (in mijn geval een htm-bestand) inlees en de data in een database knal. De htm wordt via de ingebouwde FTP functie online gezet zodat mijn site er gebruik van kan maken, maar ook HWA en WUnderground.
Hiervoor gebruik ik onder andere de volgende code:
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
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
<?php
$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();
$dataUrl = 'http://www.website.nl/weerdata.htm';
$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(preg_match('/\$'.$value.' = \"(.*)\"/',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
$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();
$dataUrl = 'http://www.website.nl/weerdata.htm';
$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(preg_match('/\$'.$value.' = \"(.*)\"/',$regel,$regs)) {
$valueArray[$data] = trim($regs[1]);
}
}
}
}
?>
Je krijgt dan een array ($valueArray) met alle data die in het bestand stond en dan met de naam die je in $dataArray hebt opgegeven. Bijvoorbeeld $valueArray['wda_temp_wda_date'] bevat de waarde van $date uit de txt/htm.
Kaarten maken is nog best lastig, zeker als je van een land (of gebied) een kaart wilt maken. Je hebt immers meerdere gegevens nodig. Voor de kleuren lijkt mij dat je idee klopt. Variabelen een kleurwaarde geven. Bijvoorbeeld:
< -10 = donkerblauw
-10 - 0 = blauw
0 - 10 = lichtblauw
10 - 15 = groen
15 - 20 = geel
20 - 25 = oranje
25 - 30 = rood
> 30 = donkerrood
Ben wel benieuwd voor welk gebied je de kaart wilt gaan maken en welke gegevens je daarvoor hebt.
Toevoeging op 06/09/2012 09:59:45:
en een hele mooie site hoor heb je! Echt de max :-)
http://xml.buienradar.nl/ wat voor Nederland een behoorlijk dekkend geheel is.
Als je het voor heel België wilt doen zal je toch die data moeten hebben. Wellicht is er voor België ook zoiets als We hebben al behoorlijk wat data van verschillende weerstations die meewerken aan ons project. Dus als we weten hoe we die kaart kunnen maken hebben we al een redelijk dekkend gebied van België.
Joeri Jacobs op 06/09/2012 09:58:11:
Maarja, hoe begin je natuurlijk aan zo iets? :-)
Door PHP, HTML en css te leren?
En als je het niet wil of kan leren, iemand in te huren?
De methode die je nu hanteerd werkt niet echt .. een gek hier vinden die het voor je maakt. Je zult er echt zelf moeite voor moeten doen.
n.b. dit is nu het vierde topic dat ik voorbij zie komen, waarin gevraagd wordt hoe de gegevens op te halen.