# Wetter, Temperatur, usw. per php abrufen?!



## heino-th (17. Juni 2005)

Hallo,

also da ich mich zurzeit mit einer Homepage in Flash+php beschäftige wollte ich gerne eine Anzeige mit dem aktuellen Wetter+Temperatur usw. miteinbinden, nun meine Frage:

Hat jemand sowas schon mal gemacht, da ich in php noch ziemlich neu bin, wären tutorials, Beispiele, Hilfe oder ähnliches sehr Hilfreich.
(Natürlich möchte ich schon selber gerne sowas machen, nicht das es so aussieht  als ob ich will das mir jemand sowas macht   möchte ich schon selber gern! Nur als Einsteig oder zum draus lernen/Ü*bern usw.)

Vielleicht weis auch noch jemand von welchem Dienst (z.B: wetter.de!?) man legal wetterdaten abrufen kann?

Vielen Dank schonmal! 

mfg heino


----------



## g-zus (17. Juni 2005)

ich denk das Hauptproblem ist einfach, überhaupt an Wetterdaten ranzukommen.
Wetter.de oder wetter.com bietet zwar an, ein kleines Bildchen auf der eigenen Homepage anzeigen zu lassen, das die aktuelle Wetterlage eines ausgewählten Ortes (z.B. bei einem Zuhause) zeigt, aber man kann halt nicht das design oder die ausgabeform davon beeinflussen, außerdem ist da Werbung von der seite glaube ich dabei.


----------



## MiLa (17. Juni 2005)

http://www.donnerwetter.de stellt z.B. soetwas wie nach PLZ suchen zur Verfügung und stellt zumindest die Grad-Zahl in Textform dar. Da könnte man von PHP diese Seite aufrufen lassen und den entsprechenden Teil filtern.


----------



## Sven Mintel (17. Juni 2005)

Hier schwirrt irgendwo ein Thema herum, wo es auch darum geht:
dort ging es um die Auswertung der Wetterdaten von Flughäfen...diese stehen gratis zur Verfügung.
Such mal ein bißchen herum

http://www.tutorials.de/tutorials191043.html


----------



## heino-th (17. Juni 2005)

hm, ja hab ihn mir schon durchgelesen, aber irgendwie werd ich daraus net ganz schlau, wie ich des ins richtige wetter umwandle   

Des bekommen von einem Dienst dafür könnte n Problem werden! Werd gleich mal ne Mail an wetter.de oder wetter.com schicken und nachfragen ob und wie ich dessen Daten abrufen darf/kann    
(Falls ich ne Mailadresse von denen rausbekomm!)

Falls jemand noch n paar Tipps oder Infos hat, immer her damit 
thx

mfg heino


----------



## heino-th (17. Juni 2005)

Sodala, hab grad ne Mail an wetter.com geschrieben...
Jetzt heißtes erstmal warten und wenns erlaubt wird, 
nach Möglichkeit ein Skript zum abrufen dieser Daten zu schreiben, 
viellicht weis ja jemand n tut oder hat selber schonmal was 
ähnliches geschrieben aus dem ich was lernen kann.  )

mfg heino


----------



## MiLa (17. Juni 2005)

Ich werde mich in Kürze damit beschäftigen, da ich vor habe das reale Wetter von einem bestimmten Punkt der Welt in ein Browserspiel einzubinden. Auf die Dauer durch einen Zufallsgenerator ermitteltes Wetter dürfte langweilig werden... ...da bezieh ich das doch lieber auf den "echten" Zufall  

Wenn ich damit soweit bin, werde ich das hier mal vorstellen...
...allerdings wird das ganze in Java realisiert - die Portierung sollte aber keine Probleme bereiten.


----------



## heino-th (17. Juni 2005)

oh ja, das wär super! 

freu mich schon drauf! 

mfg heino


----------



## MiLa (18. Juni 2005)

Manchma gehts schneller als man denkt...  Ich hab das ganze erstmal in PHP umgesetzt, ist denke ich auch in deinem Sinne?!

Habs mir ganz einfach gemacht... Unter http://deutsch.wunderground.com/ werden RSS-Feeds die aktuellen Wetterdaten weltweit als RSS-Feeds bereitsgestellt, die auszulesen ist ja kein Akt.
Du kannst dir z.B. unter http://deutsch.wunderground.com/global/DL.html unten aus der tabelle eine deutsche Stadt aussuchen, die Stadt auswählen und rechts oben steht dann ein Sysmbol "RSS", den Link kopierst du dir und fügst ihn unten in $url ein.

Ich habe in dem Script unten nur die für mich wichtigen Elemente geflitert, das sind
[temp] => Temperatur
[verh] => Wetterverhältnisse
[windr] => Windrichtung
[windg] => Windgeschwindigkeit


```
//Wetter in Hamburg - Fuhlsbüttel
$url = "http://deutsch.wunderground.com/auto/rss_full/global/stations/10147.xml";
$content = implode("", file($url));

preg_match_all("/\<item>(.*?)\<\/item\>/si", $content, $results);
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][0], $desc);

$arr = explode(" | ",$desc[1]);

/*
 * echo '<pre>' . print_r($arr, true) . '</pre>';
 * 
 * Array
 * (
 *     [0] => Temperature: 86°F / 30°C
 *     [1] => Humidity: 74%
 *     [2] => Pressure: 29.83in / 1010hPa
 *     [3] => Conditions: Partly Cloudy
 *     [4] => Wind Direction: ESE
 *     [5] => Wind Speed: 5mph / 7km/h
 *     [6] => Updated: 10:00 PM PHT
 * )
 */
 
preg_match("/Temperature: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];

preg_match("/Conditions: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

preg_match("/Wind Direction: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];

preg_match("/Wind Speed: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];

echo '<pre>' . print_r($wetter, true) . '</pre>';
```

Hoff das hilft dir weiter ;-)


----------



## heino-th (19. Juni 2005)

wow, 
vielen Dank!

genau sowas hab ich gesucht
jetzt muss ich nur noch nach meinem Gebrauch anpassen und dann gehts

thx

mfg heino


----------



## nordi (24. Juni 2005)

Hi,
hab mir den Thread mit großem Interesse durchgelesen.
Hab dein Script auch auspobiert. Bei mit wird aber immer dies hier ausgegeben:

Array
(
    [Temperatur] => 32°
    [Verh] => 
    [windr] => South
    [windg] => 11
)

Hab jetzt die Wetterdaten für Köln genommen.
Wie bekomme ich dieses "Array" weg und wie kann ich die eckigen Klammern ändern. Würde gerne nur zB. Temperatur dort stehen haben.

Mfg aus dem heißen Köln

Marius


----------



## MiLa (24. Juni 2005)

Lösche die Zeile mit dem print_r() und ersetze sie durch Ausgaben der einzelnen Array-Elemente, also z.B. 
	
	
	



```
echo $wetter['temp'];
```


----------



## SilentWarrior (24. Juni 2005)

Vielen Dank für das tolle Script, Lars! Hab es genau wie nordi mit grossem Interesse gelesen. Das gehört dringend in die Tutorials-Ecke, damit die ganze Welt davon profitieren kann!


----------



## P_F (24. Juni 2005)

ist das legal, sich einfach die wetterdaten von anderen Seiten zu stibitzen ?


----------



## MiLa (24. Juni 2005)

Ich denke, dass das in diesem Falle legal ist, da das Script einen RSS-Feed ausliest, der von dieser Seite als Service berietgestellt wird. So ist dieses Script im prinzip nicht viel mehr als ein RSS-Reader für diesen speziellen Feed.
Allerdings weiß ich nicht, ob dann auf der Internetseite wo dieses Script verwendet wird ein Hinweis auf die Quelle der Wetterdaten stehen muss.

Eventuell könnte man ja mal den Betreiber dieser Seite kontaktieren.

@SilentWarrior: Hätte ich im Grunde nichts dagegen


----------



## nordi (25. Juni 2005)

Super, hat bestens funktioniert mit dem "  echo $wetter['temp'];  ".
Gibt es auch deutsche RSS's über das Wetter? Bei Verhältnissen steht nämlich immer alls auf englisch wie zB "clear, rainy" etc...


----------



## SilentWarrior (25. Juni 2005)

nordi: Mach doch einfach selbst eine kleine Übersetzung, mit [phpf]switch[/phpf] oder so. Allzuviele Begriffe werden’s ja nicht sein, oder?


----------



## MiLa (26. Juni 2005)

So mach ichs auch...


```
switch($wetter['verh'])
{
    case 'Partly Cloudy':
        $wetter['verh'] = 'Teilweise wolkig';
    break;
    
    case 'Scattered Clouds':
        $wetter['verh'] = 'Teils wolkig';
    break;
    
    case 'Overcast':
        $wetter['verh'] = 'Bewölkt';
    break;
    
    default:
        $wetter['verh'] = $wetter['verh'];
    break;   
}
```

Da fehlen natürlich noch einige...


----------



## nordi (26. Juni 2005)

bekommt man auf der seite von wunderground auch noch die restlichen bezeichnungen?


----------



## MiLa (26. Juni 2005)

Hm, ich hab bisher immer geschaut und wenn mal was englisches da stand, hab ichs übersetzt und eingefügt...
...kannst dich natürlich durch einige Orte durchklicken, da findest bestimmt schon einiges, dauert halt seine Zeit 

Kannst du dann ja auch hier reinstellen


----------



## neopayne (26. Juni 2005)

erstmal Vielen Dank für diesen Thread. Ich hätte mich nie an etwas großes wie das herangewagt. Bis jetzt habe ich nur mit Datenbanken programmiert.

Im großen und ganzen habe ich das Script schon verstanden aber was bedeutet z.B. das?

/\<item>(.*?)\<\/item\>/si

warum wird nicht einfach nach <item> gesucht?


----------



## MiLa (27. Juni 2005)

Das ist ein regulärer Ausdruck. Auf Gutdeutsch sucht der den Text raus, der zwischen <item> und </item> steht und schreibt ihn in eine Variable. So simpel ist das...
Wenn du mehr zu regulären Ausdrücken wissen möchtest, schau einfach mal hier in den Tutorials nach, da findest du nen ganz schönes


----------



## neopayne (27. Juni 2005)

Vielen Dank ich werde mich mal durchlesen - freue mich schon auf neues Wissen


----------



## nordi (27. Juni 2005)

Hier meine Liste mit den Wetterdaten. Dann muss nicht jeder einzelne alles zusammen suchen. Ich hab jetzt mal von den Wetterdaten in Afrika abgesehen, wie Sandstorm, Blowing Sand etc...


```
//Weterdaten
switch($wetter['verh']) 
{ 
    case 'Partly Cloudy': 
        $wetter['verh'] = 'Teils wolkig'; 
    break; 
     
	 case 'Mostly Cloudy': 
        $wetter['verh'] = '&Uuml;berwiegend wolkig'; 
    break;
	 
    case 'Scattered Clouds': 
        $wetter['verh'] = 'Teils wolkig'; 
    break; 
     
    case 'Overcast': 
        $wetter['verh'] = 'Bew&ouml;lkt'; 
    break; 
	
	case 'Clear': 
        $wetter['verh'] = 'Heiter'; 
    break; 
     
	 case 'Fog': 
        $wetter['verh'] = 'Nebel'; 
    break; 
	 
	 case 'Heavy Fog': 
        $wetter['verh'] = 'Starker Nebel'; 
    break; 
	 
	 case 'Light Fog': 
        $wetter['verh'] = 'Leicher Nebel'; 
    break; 
	
	case 'Thunderstorm': 
        $wetter['verh'] = 'Gewitter'; 
    break; 
	
	case 'Light Thunderstorm': 
        $wetter['verh'] = 'Leichte Gewitter'; 
    break; 
	
	case 'Heavy Thunderstorm': 
        $wetter['verh'] = 'Starke Gewitter'; 
    break; 
	 
	 case 'Thunderstorms and Rain': 
        $wetter['verh'] = 'Gewitter mit Regen'; 
    break; 
	 
	 case 'Light Thunderstorms and Rain': 
        $wetter['verh'] = 'Leichte Gewitter mit Regen'; 
    break; 
	 
	 case 'Light Rain Showers': 
        $wetter['verh'] = 'Leichte Regenschauer'; 
    break; 
	
	 case 'Heavy Rain Showers': 
        $wetter['verh'] = 'Starke Regenschauer'; 
    break; 
	
	 case 'Light Rain': 
        $wetter['verh'] = 'Leichter Regen'; 
    break; 
	
	 case 'Haze': 
        $wetter['verh'] = 'Tr&uuml;be'; 
    break; 
	 
	  case 'Patches of Fog': 
        $wetter['verh'] = 'Nebelfelder'; 
    break; 
	
	  case 'Unknown Percipitation': 
        $wetter['verh'] = 'Ung. Niederschl&auml;ge'; 
    break; 
	
	case 'Light Drizzle': 
        $wetter['verh'] = 'Leichter Spr&uuml;hregen'; 
    break; 
	
	case 'Mist': 
        $wetter['verh'] = 'Leicher Nebel'; 
    break;
	
    case 'Light Rain Mist': 
        $wetter['verh'] = 'Leicher Nebel'; 
    break;
	 
    default: 
        $wetter['verh'] = $wetter['verh']; 
    break;  
}
```

Ich hoffe, ich hab alles richtig übersetzt


----------



## nordi (27. Juni 2005)

Hier die Windrichtungen ins Deutsche: Gilt eigentlich nur für East (Osten)


```
//Windrichtungen
switch($wetter['windr']) 
{ 
	case 'North': 
        $wetter['windr'] = 'Norden'; 
    break; 
	
	case 'East': 
        $wetter['windr'] = 'Osten'; 
    break;
	
	case 'South': 
        $wetter['windr'] = 'S&uuml;den'; 
    break; 

     case 'West': 
        $wetter['windr'] = 'Westen'; 
    break;
	
	case 'SE': 
        $wetter['windr'] = 'SO'; 
    break; 
	
	case 'SSE': 
        $wetter['windr'] = 'SSO'; 
    break;
	
	case 'NE': 
        $wetter['windr'] = 'NO'; 
    break;
	
	case 'ESE': 
        $wetter['windr'] = 'OSO'; 
    break; 
	
	case 'NNE': 
        $wetter['windr'] = 'NNO'; 
    break; 
	
	case 'ENE': 
        $wetter['windr'] = 'ONO'; 
    break; 
	
	case 'Calm': 
        $wetter['windr'] = 'Windstill'; 
    break; 
	
	default: 
        $wetter['windr'] = $wetter['windr']; 
    break;
}
```


----------



## MiLa (27. Juni 2005)

Boah, super...


----------



## neopayne (27. Juni 2005)

Vielen Dank nordi für die Auflistung der Wetterzustände ich war auch gerade am sammeln.


----------



## bigtail (30. Juni 2005)

Besten Dank für das tolle Script.


> was bedeutet: /\<item>(.*?)\<\/item\>/si
> 
> Das ist ein regulärer Ausdruck.
> Auf Gutdeutsch, sucht der den Text raus, der zwischen <item> und </item> steht und schreibt ihn in eine Variable.
> So simpel ist das...


Aber was ist */si* ?


----------



## icelink (4. November 2007)

s und i sind sogenannte Modifiert. i heißt insensitive und macht, dass groß-/kleinschreibung egal ist. wenn ich mich recht erinnere sorgte s dafür, dass meta-charaktere wie * auch whitespaces (Leerzeichen, Tabs, Umbrüche usw.) umfassen.


----------



## nordi (12. November 2007)

Hi, in den letzten Tagen funktioniert das Script nicht mehr! Ich glaub "Wunderground" hat irgendetwas umgestellt. Ich weiß aber nicht genau was? Also die Temperatur und der Wetterzustand wird nicht mehr angezeigt! Wisst ihr, woran das liegen könnte?


----------



## b_sun (13. November 2007)

Hallo Leuts

Habe das php-script auch am laufen und habe mich ja auch gewundert, warum es nicht mehr so ganz funktioniert.

Da ist mir der Gedanke gekommen: Deutsche Seite = deutsche Bezeichnungen
und seid dem gehts wieder.

also aus Temperature wird Temperatur, aus Wind direction wird Windrichtung usw.
(mehr brauchte ich ja erst mal nicht)

Da frage ich mich nur wieder, wer sich so einen Unfug ausdenkt.


----------



## b_sun (13. November 2007)

Hallo Leuts

Hier mal ein Teil von meinem neuen script mit deutschen Bezeichnungen:

preg_match("/Temperatur: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];

preg_match("/Bedingungen: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

preg_match("/Windrichtung: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];

preg_match("/Geschwindigkeit: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];

Die anderen deutschen Bezeichnungen sind jetzt ja kaum noch ein Problem.


----------



## nordi (14. November 2007)

hey, also bei mir funktioniert es noch nicht irgendwie!? Könnt ihr da kurz mal draufgucken? Ist, glaube ich, nur ein kleines Problem - finde es aber nicht:


```
<?php

$url = "http://www.wunderground.com/auto/rss_full/global/stations/10513.xml"; 
$content = implode("", file($url)); 

preg_match_all("/\<item>(.*?)\<\/item\>/si", $content, $results); 
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][0], $desc); 

$arr = explode(" | ",$desc[1]); 

preg_match("/Temperatur: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];

preg_match("/Bedingungen: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

preg_match("/Windrichtung: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];

preg_match("/Geschwindigkeit: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];

switch($wetter['verh']) 
{ 
    case 'Partly Cloudy': 
        $wetter['verh'] = 'Teils wolkig'; 
    break; 
     
	 case 'Mostly Cloudy': 
        $wetter['verh'] = '&Uuml;berwiegend wolkig'; 
    break;
	 
// [..]
}

switch($wetter['windr']) 
{ 
	case 'North': 
        $wetter['windr'] = 'Norden'; 
    break; 
	
// [..]
}
?>
```

Vielen Dank schonmal für die Antworten!


----------



## b_sun (14. November 2007)

hallo nordi

spontan würde ich mal sagen deine url
ich habe die aus dem weiter oben befindlichen originalscript:

//Wetter in Hamburg - Fuhlsbüttel
$url = "http://deutsch.wunderground.com/auto/rss_full/global/stations/10147.xml";
$content = implode("", file($url)); 


übrigens sind die "bedingungen" jetzt auch deutsch, windrichtung aber nachwievor english.


----------



## nordi (14. November 2007)

ich wohn aber nicht in hamburg sondern in köln


----------



## b_sun (15. November 2007)

So, ich habe noch mal ein wenig rumprobiert.

Verwendet man die deutsche url,  z.B für Hamburg-Fuhlsbüttel 

$url = "http://deutsch.wunderground.com/auto/rss_full/global/stations/10147.xml";

oder für Köln (10513.xml) das hier

$url = "http://deutsch.wunderground.com/auto/rss_full/global/stations/10513.xml";

nimmt man nach preg_match...  deutsche Bezeichnungen , als Beispiel

preg_match("/Bedingungen: (.*)/si", $arr[3], $str);
 


Verwendet man die englische url, dementsprechend sollte es dann so lauten:

$url = "http://wunderground.com/auto/rss_full/global/stations/10147.xml";

preg_match("/conditions: (.*)/si", $arr[3], $str);


Das Anfangsproblem lag also bei der anderen url. 
Hoffe, das dies weiterhilft.


----------



## Grossstadtkind (27. Juli 2010)

Hallo zusammen,

zuerst einmal ein fettes *SORRY*, dass ich diesen alten Thread wieder ausgrabe. Aber Freund Google hat mich hierher geführt und ich bin mit dieser Lösung absolut zufrieden und bedanke mich schon einmal für eure Hilfe.

Mir schwebt vor, zu den einzelnen Wetterbedingungen ein Wettericon anzeigen zu lassen, was die aktuelle Bedingungen anzeigt. Ich bin noch nicht so fit, was PHP betrifft und würde mich riesig freuen, wenn einer eine Lösung dazu hat.

Reisst mir bitte nicht den Kopf ab. Ich würde gerne diesen Code mit euch weiterentwickeln. Ich finde es ist eine leicht verständliche Lösung, die wohl super fortgeführt bzw. ausgebaut werden kann.

Mein Code sieht derzeit so aus:


```
<?php
//Wetter in Waldfeucht
$url = "http://rss.wunderground.com/auto/rss_full/global/stations/10500.xml"; 
$content = implode("", file($url)); 

preg_match_all("/\<item>(.*?)\<\/item\>/si", $content, $results); 
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][0], $desc); 

$arr = explode(" | ",$desc[1]); 

/* 
 * echo '<pre>' . print_r($arr, true) . '</pre>'; 
 *  
 * Array 
 * ( 
 *     [0] => Temperature: 86°F / 30°C 
 *     [1] => Humidity: 74% 
 *     [2] => Pressure: 29.83in / 1010hPa 
 *     [3] => Conditions: Partly Cloudy 
 *     [4] => Wind Direction: ESE 
 *     [5] => Wind Speed: 5mph / 7km/h 
 *     [6] => Updated: 10:00 PM PHT 
 * ) 
 */ 
//Temperatur  
preg_match("/Temperature: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];
 

//Wetterbedingung
preg_match("/Conditions: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

//Übersetze Wetterbedingung ins Deutsche
switch($wetter['verh'])  
{  
    case 'Partly Cloudy':  
        $wetter['verh'] = 'Teils wolkig';  
    break;  
      
     case 'Mostly Cloudy':  
        $wetter['verh'] = '&Uuml;berwiegend wolkig';  
    break; 
      
    case 'Scattered Clouds':  
        $wetter['verh'] = 'Teils wolkig';  
    break;  
      
    case 'Overcast':  
        $wetter['verh'] = 'Bew&ouml;lkt';  
    break;  
     
    case 'Clear':  
        $wetter['verh'] = 'Heiter';  
    break;  
      
     case 'Fog':  
        $wetter['verh'] = 'Nebel';  
    break;  
      
     case 'Heavy Fog':  
        $wetter['verh'] = 'Starker Nebel';  
    break;  
      
     case 'Light Fog':  
        $wetter['verh'] = 'Leicher Nebel';  
    break;  
     
    case 'Thunderstorm':  
        $wetter['verh'] = 'Gewitter';  
    break;  
     
    case 'Light Thunderstorm':  
        $wetter['verh'] = 'Leichte Gewitter';  
    break;  
     
    case 'Heavy Thunderstorm':  
        $wetter['verh'] = 'Starke Gewitter';  
    break;  
      
     case 'Thunderstorms and Rain':  
        $wetter['verh'] = 'Gewitter mit Regen';  
    break;  
      
     case 'Light Thunderstorms and Rain':  
        $wetter['verh'] = 'Leichte Gewitter mit Regen';  
    break;  
      
     case 'Light Rain Showers':  
        $wetter['verh'] = 'Leichte Regenschauer';  
    break;  
     
     case 'Heavy Rain Showers':  
        $wetter['verh'] = 'Starke Regenschauer';  
    break;  
     
     case 'Light Rain':  
        $wetter['verh'] = 'Leichter Regen';  
    break;  
     
     case 'Haze':  
        $wetter['verh'] = 'Tr&uuml;be';  
    break;  
      
      case 'Patches of Fog':  
        $wetter['verh'] = 'Nebelfelder';  
    break;  
     
      case 'Unknown Percipitation':  
        $wetter['verh'] = 'Ung. Niederschl&auml;ge';  
    break;  
     
    case 'Light Drizzle':  
        $wetter['verh'] = 'Leichter Spr&uuml;hregen';  
    break;  
     
    case 'Mist':  
        $wetter['verh'] = 'Leicher Nebel';  
    break; 
     
    case 'Light Rain Mist':  
        $wetter['verh'] = 'Leicher Nebel';  
    break; 
      
    default:  
        $wetter['verh'] = $wetter['verh'];  
    break;   
}  

//Luftfeuchtigkeit
preg_match("/Humidity: (.*)/si", $arr[1], $str);
$wetter['feuchte'] = $str['1'];

 
//Windrichtung
preg_match("/Wind Direction: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];
 

//Übersetze Windrichtung ins Deutsche
switch($wetter['windr'])  
{  
    case 'North':  
        $wetter['windr'] = 'Nord';  
    break;  
     
    case 'East':  
        $wetter['windr'] = 'Ost';  
    break; 
     
    case 'South':  
        $wetter['windr'] = 'S&uuml;d';  
    break;  

     case 'West':  
        $wetter['windr'] = 'West';  
    break; 
     
    case 'SE':  
        $wetter['windr'] = 'SO';  
    break;  
     
    case 'SSE':  
        $wetter['windr'] = 'SSO';  
    break; 
     
    case 'NE':  
        $wetter['windr'] = 'NO';  
    break; 
     
    case 'ESE':  
        $wetter['windr'] = 'OSO';  
    break;  
     
    case 'NNE':  
        $wetter['windr'] = 'NNO';  
    break;  
     
    case 'ENE':  
        $wetter['windr'] = 'ONO';  
    break;  
     
    case 'Calm':  
        $wetter['windr'] = 'Windstill';  
    break;  
     
    default:  
        $wetter['windr'] = $wetter['windr'];  
    break; 
}

//Windgeschwindigkeit
preg_match("/Wind Speed: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];


//echo $wetter['temp'];
//echo $wetter['verh'];
//echo $wetter['windr'];
//echo $wetter['windg'];
//echo '<pre>' . print_r($wetter, true) . '</pre>'; 
?>

<html>
  <head>
  <title>Das Wetter in Waldfeucht</title>
  </head>
  <body>
  <h2>Waldfeucht</h2>
  <br>
  <?php
  echo  $wetter['temp']; 
  echo  $wetter['verh']; 
  echo  $wetter['windg'];
  echo  $wetter['windr'];
  echo  $wetter['feuchte'];
  ?>
  </body>
  </html>
```

Grüße, GSK


----------



## ComFreek (27. Juli 2010)

(Du hättest auch einen neuen Thread aufmachen können und auf diesen verweisen, naja)

Wo ist jetzt das Problem? Willst du je nach Wetterlage ein anderes Bild anzeigen?
Dann mach doch eine IF-Abfrage (SWITCH geht auch),


----------



## Tim Bureck (27. Juli 2010)

Grossstadtkind hat gesagt.:


> Hallo zusammen,
> 
> zuerst einmal ein fettes *SORRY*, dass ich diesen alten Thread wieder ausgrabe. Aber Freund Google hat mich hierher geführt und ich bin mit dieser Lösung absolut zufrieden und bedanke mich schon einmal für eure Hilfe.
> 
> ...


 
Da du dein switch über $wetter['verh'] ja schon hast, kannst du da vor dem jeweiligen break eines case einfach folgendes hinzufügen:

$wetter['icon'] = 'regen.gif';

oder ähnliches. In der Ausgabe kannt du das Bild dann per:


```
<img src="images/<?php echo $wetter['icon'] ?>" alt="<?php echo $wetter['verh'] ?>" />
```

ausgeben.


----------



## Grossstadtkind (27. Juli 2010)

ComFreek hat gesagt.:


> (Du hättest auch einen neuen Thread aufmachen können und auf diesen verweisen, naja)
> 
> Wo ist jetzt das Problem? Willst du je nach Wetterlage ein anderes Bild anzeigen?
> Dann mach doch eine IF-Abfrage (SWITCH geht auch),


 
Richtig. Ich möchte je nach Wetterlage ein Bild einfügen, hab aber keinen Plan, welchen Code ich wo einfügen muss. Kann ich das dann hier unterbringen?

```
case 'Partly Cloudy':  
        $wetter['verh'] = 'Teils wolkig';  
    break;
[...]
```

Einfach $img... einfügen geht ja nicht. Ich weiß jetzt aber auch nicht, wie ich das lösen könnte.
Danke für die Hilfe!

Grüße, GSK


----------



## Grossstadtkind (27. Juli 2010)

Tim Bureck hat gesagt.:


> Da du dein switch über $wetter['verh'] ja schon hast, kannst du da vor dem jeweiligen break eines case einfach folgendes hinzufügen:
> 
> $wetter['icon'] = 'regen.gif';
> 
> ...


 
Sorry, Tim. Du warst schneller als ich! 
Genau so, wie du es beschrieben hast, meinte ich es. Vielen Dank! Ich werde es mal testen und weiter am Code werkeln. Wenn ich in meinen Entwicklungen weiter bin, melde ich mich und zeige es euch.

//edit: Damit ich nicht nun noch ein drittes Mal hintereinander poste, erweitere ich diesen Beitrag mal.

Ich habe nun den Code erweitert und ein WetterIcon der entsprechenden Wetterbedingung hinzugefügt.
Hier ein Beispiel: KLICK!

Code:


```
<?php
//Wetter in Waldfeucht
$url = "http://rss.wunderground.com/auto/rss_full/global/stations/10500.xml"; 
$content = implode("", file($url)); 

preg_match_all("/\<item>(.*?)\<\/item\>/si", $content, $results); 
preg_match("/\<description\>(.*?)\<\/description\>/si", $results[1][0], $desc); 

$arr = explode(" | ",$desc[1]); 

/* 
 * echo '<pre>' . print_r($arr, true) . '</pre>'; 
 *  
 * Array 
 * ( 
 *     [0] => Temperature: 86°F / 30°C 
 *     [1] => Humidity: 74% 
 *     [2] => Pressure: 29.83in / 1010hPa 
 *     [3] => Conditions: Partly Cloudy 
 *     [4] => Wind Direction: ESE 
 *     [5] => Wind Speed: 5mph / 7km/h 
 *     [6] => Updated: 10:00 PM PHT 
 * ) 
 */ 
//Temperatur  
preg_match("/Temperature: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];
 

//Wetterbedingung
preg_match("/Conditions: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

//Übersetze Wetterbedingung ins Deutsche, setze Icon ein und wechsel zwischen Tag und Nacht
switch($wetter['verh'])  
{  
    case 'Partly Cloudy':  
        $wetter['verh'] = 'Teils wolkig';
//        $wetter['icon'] = 'teils_bewoelkt.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'teils_bewoelkt1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'teils_bewoelkt.png';
    } 
    break;  
      
     case 'Mostly Cloudy':  
        $wetter['verh'] = '&Uuml;berwiegend wolkig';
//        $wetter['icon'] = 'ueberw_bewoelkt.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'ueberw_bewoelkt1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'ueberw_bewoelkt.png';
    } 
    break; 
      
    case 'Scattered Clouds':  
        $wetter['verh'] = 'Teils wolkig';
//        $wetter['icon'] = 'teils_bewoelkt.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'teils_bewoelkt1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'teils_bewoelkt.png';
    }
    break;  
      
    case 'Overcast':  
        $wetter['verh'] = 'Bew&ouml;lkt';  
        $wetter['icon'] = 'bewoelkt.png';  
    break;  
     
    case 'Clear':  
        $wetter['verh'] = 'Heiter'; 
//        $wetter['icon'] = 'heiter.png';
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'heiter1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'heiter.png';
    } 
    break;  
      
     case 'Fog':  
        $wetter['verh'] = 'Nebel';  
        $wetter['icon'] = 'nebel.png'; 
    break;  
      
     case 'Heavy Fog':  
        $wetter['verh'] = 'Starker Nebel';
        $wetter['icon'] = 'nebel.png';   
    break;  
      
     case 'Light Fog':  
        $wetter['verh'] = 'Leicher Nebel';  
        $wetter['icon'] = 'nebel.png'; 
    break;  
     
    case 'Thunderstorm':  
        $wetter['verh'] = 'Gewitter';  
//        $wetter['icon'] = 'gewitter.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'gewitter1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'gewitter.png';
    }
    break;  
     
    case 'Light Thunderstorm':  
        $wetter['verh'] = 'Leichte Gewitter';  
        $wetter['icon'] = 'gewitter.png'; 
    break;  
     
    case 'Heavy Thunderstorm':  
        $wetter['verh'] = 'Starke Gewitter';  
        $wetter['icon'] = 'gewitter.png'; 
    break;  
      
     case 'Thunderstorms and Rain':  
        $wetter['verh'] = 'Gewitter mit Regen'; 
        $wetter['icon'] = 'gewitter.png';  
    break;  
      
     case 'Light Thunderstorms and Rain':  
        $wetter['verh'] = 'Leichte Gewitter mit Regen';  
        $wetter['icon'] = 'gewitter.png'; 
    break;  
      
     case 'Light Rain Showers':  
        $wetter['verh'] = 'Leichte Regenschauer';  
//        $wetter['icon'] = 'leichter_regen.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'leichter_regen1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'leichter_regen.png';
    }
    break;  
     
case 'Rain Showers':  
        $wetter['verh'] = 'Regenschauer';  
//        $wetter['icon'] = 'leichter_regen.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'leichter_regen1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'leichter_regen.png';
    }
    break;       
     
     case 'Heavy Rain Showers':  
        $wetter['verh'] = 'Starke Regenschauer';  
        $wetter['icon'] = 'starker_regen.png'; 
    break;  
     
     case 'Light Rain':  
        $wetter['verh'] = 'Leichter Regen';
//        $wetter['icon'] = 'leichter_regen.png';  
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'leichter_regen1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'leichter_regen.png';
    } 
    break;  
     
     case 'Haze':  
        $wetter['verh'] = 'Tr&uuml;b';  
//        $wetter['icon'] = 'trueb.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'trueb1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'trueb.png';
    }
    break;  
      
      case 'Patches of Fog':  
        $wetter['verh'] = 'Nebelfelder';  
        $wetter['icon'] = 'nebel.png'; 
    break;  
     
      case 'Unknown Percipitation':  
        $wetter['verh'] = 'Ung. Niederschl&auml;ge';  
        $wetter['icon'] = 'bewoelkt.png'; 
    break;  
     
    case 'Light Drizzle':  
        $wetter['verh'] = 'Leichter Spr&uuml;hregen';  
//        $wetter['icon'] = 'leichter_regen.png'; 
        $time = time();
$uhrzeit = date("H:i", $time);

    if($uhrzeit > "19:00") {
    $wetter['icon'] = 'leichter_regen1.png';
    } 
    if ($uhrzeit > "06:00") {
    $wetter['icon'] = 'leichter_regen.png';
    }
    break;  
     
    case 'Mist':  
        $wetter['verh'] = 'Leicher Nebel';  
        $wetter['icon'] = 'nebel.png'; 
    break; 
     
    case 'Light Rain Mist':  
        $wetter['verh'] = 'Leicher Nebel';  
        $wetter['icon'] = 'nebel.png'; 
    break; 
      
    default:  
        $wetter['verh'] = $wetter['verh'];  
    break;   
}  
//------------------------------------


//Luftfeuchtigkeit
preg_match("/Humidity: (.*)/si", $arr[1], $str);
$wetter['feuchte'] = $str['1'];

 
//Windrichtung
preg_match("/Wind Direction: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];
 

//Übersetze Windrichtung ins Deutsche
switch($wetter['windr'])  
{  
    case 'North':  
        $wetter['windr'] = 'Nord';  
    break;  
     
    case 'East':  
        $wetter['windr'] = 'Ost';  
    break; 
     
    case 'South':  
        $wetter['windr'] = 'S&uuml;d';  
    break;  

     case 'West':  
        $wetter['windr'] = 'West';  
    break; 
     
    case 'SE':  
        $wetter['windr'] = 'SO';  
    break;  
     
    case 'SSE':  
        $wetter['windr'] = 'SSO';  
    break; 
     
    case 'NE':  
        $wetter['windr'] = 'NO';  
    break; 
     
    case 'ESE':  
        $wetter['windr'] = 'OSO';  
    break;  
     
    case 'NNE':  
        $wetter['windr'] = 'NNO';  
    break;  
     
    case 'ENE':  
        $wetter['windr'] = 'ONO';  
    break;  
     
    case 'Calm':  
        $wetter['windr'] = 'Windstill';  
    break;  
     
    default:  
        $wetter['windr'] = $wetter['windr'];  
    break; 
}

//Windgeschwindigkeit
preg_match("/Wind Speed: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];


//echo $wetter['temp'];
//echo $wetter['verh'];
//echo $wetter['windr'];
//echo $wetter['windg'];
//echo '<pre>' . print_r($wetter, true) . '</pre>'; 
?>

<html>
  <head>
  <title>Das Wetter in Waldfeucht</title>
  </head>
  <body>
 
<div align="center">
  <center>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-bottom-width: 0" bordercolor="#0066CC" width="180">
    <tr>
      <td width="100%" style="border-left-style: solid; border-left-width: 1; border-right-style: none; border-right-width: medium; border-top: 1px solid #0066CC; border-bottom-style: none; border-bottom-width: medium" colspan="2" bgcolor="#0066CC">
      <p align="center" style="margin-top: 0; margin-bottom: 0"><b>
      <font face="Verdana" size="2" color="#FFFFFF">Waldfeucht</font></b></td>
    </tr>
    <tr>
      <td width="50%" style="border-left-style: solid; border-left-width: 1; border-right-style: none; border-right-width: medium; border-top: 1px solid #0066CC; border-bottom-style: none; border-bottom-width: medium">
      <p align="center" style="margin-top: 0; margin-bottom: 0">
      <img src="./icons/<?php echo $wetter['icon'] ?>" alt="<?php echo $wetter['verh'] ?>" /></td>
      <td width="50%" style="border-left-style: none; border-left-width: medium; border-right-style: solid; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-style: none; border-bottom-width: medium">
      <p style="margin-top: 0; margin-bottom: 0"><font face="Verdana" size="2">
      <?php echo $wetter['verh'] ?></font></td>
    </tr>
    <tr>
      <td width="100%" colspan="2" style="border-left-style: solid; border-left-width: 1; border-right: 1px solid #0066CC; border-top-style: none; border-top-width: medium; border-bottom: 1px solid #0066CC">
      <p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
      <p style="margin-top: 0; margin-bottom: 0"><b>
      <font face="Verdana" size="2" color="#0066CC">Akt. Temp.: <?php echo $wetter['temp'] ?>C</font></b></p>
      <p style="margin-top: 0; margin-bottom: 0"><b>
      <font face="Verdana" size="2" color="#0066CC">Luftfeuchte: <?php echo $wetter['feuchte'] ?></font></b></p>
      <p style="margin-top: 0; margin-bottom: 0"><b>
      <font face="Verdana" size="2" color="#0066CC">Windgeschw.: <?php echo $wetter['windg'] ?> km/h</font></b></p>
      <p style="margin-top: 0; margin-bottom: 0"><b>
      <font face="Verdana" size="2" color="#0066CC">Windrichtung: <?php echo $wetter['windr'] ?></font></b></td>
    </tr>
  </table>
  </center>
</div>



  </body>
  </html>
```

Nun habe ich den Code noch so erweitert, dass er ab 19 Uhr statt die Icons mit einer Sonne durch die Icons mit einem Mond, gemäß Tageszeit, ersetzt. Folgendes Problemchen habe ich aber noch:
Beim Wechsel um 19 Uhr zeigt er das "Mond-Icon" nicht an sondern das berühmte rote X auf weißem Grund. Beim erneuten Wechsel um 6 Uhr zu den TagesIcons zeigt er diese dann wieder an.
Die Ausgabe der Icons im HTML-Quelltext lautet wie folgt:


```
<img src="./icons/<?php echo $wetter['icon'] ?>" alt="<?php echo $wetter['verh'] ?>" />
```

Hat jemand eine Lösung für das Problem?

Vielen Dank!

Grüße, GSK


----------

