// 101-CodigoPHP.php
// Versión 1.0 10/12/2017 Juan Manuel Cueva Lovelle. Universidad de Oviedo
$apikey = "47b790fd0fc41878c80c57c9846132cb";
$ciudad = "Oviedo";
$codigoPais ="ES";
$formato = "&mode=xml";
$unidades = "&units=metric";
$idioma = "&lang=es";
$url = "http://api.openweathermap.org/data/2.5/weather?q=" . $ciudad . "," . $codigoPais . $formato . $unidades . $idioma . "&APPID=" . $apikey;
// Se solicita el archivo XML de la url que se pasa como parámetro y se recibe como un string
$datos = file_get_contents($url);
if($datos==null) {
echo "<h3>Error en el archivo XML recibido</h3>";
}
else {
echo "<h3>XML recibido correctamente</h3>";
}
echo "<h2>XML recibido</h2>";
$datos =preg_replace("/>\s*</",">\n<",$datos);
echo '<pre>', htmlentities($datos), '</pre>';
// Se convierte el string en un objeto XML
$xml = new SimpleXMLElement($datos);
echo "<h2>XML como objeto SimpleXMLElement</h2>";
echo '<pre>', print_r($xml), '</pre>';
echo "<h2>Datos recibidos</h2>";
$icono = $xml->weather['icon'];
$URLicono = "http://openweathermap.org/img/w/" . $icono . ".png";
$descripcion = $xml->weather['value'];
echo "<img src = '$URLicono' alt = '$descripcion' >";
echo "<p>Ciudad: {$xml->city['name']}</p>";
echo "<p>País: {$xml->city->country}</p>";
echo "<p>Coordenadas: Longitud {$xml->city->coord['lon']} grados</p>";
echo "<p>Coordenadas: Latitud {$xml->city->coord['lat']} grados</p>";
echo "<p>Temperatura: {$xml->temperature['value']} grados Celsius</p>";
echo "<p>Temperatura mínima: {$xml->temperature['min']} grados Celsius</p>";
echo "<p>Temperatura máxima: {$xml->temperature['max']} grados Celsius</p>";
echo "<p>Temperatura (unidades): {$xml->temperature['unit']} </p>";
echo "<p>Humedad: {$xml->humidity['value']} {$xml->humidity['unit']} </p>";
echo "<p>Presión: {$xml->pressure['value']} {$xml->pressure['unit']} </p>";
echo "<p>Velocidad del viento: {$xml->wind->speed['value']} metros/segundo</p>";
echo "<p>Tipo de viento: {$xml->wind->speed['name']} </p>";
echo "<p>Dirección del viento: {$xml->wind->direction['value']} grados</p>";
echo "<p>Orientación del viento: {$xml->wind->direction['code']} </p>";
echo "<p>Nombre del viento: {$xml->wind->direction['name']} </p>";
echo "<p>Nubosidad: {$xml->clouds['value']} %. Descripción: {$xml->clouds['name']} </p>";
echo "<p>Visibilidad: {$xml->visibility['value']} metros </p>";
echo "<p>Estado del tiempo: {$xml->weather['value']} </p>";
$fechaHoraAmanecer = new DateTime($xml->city->sun['rise'], new DateTimeZone('Europe/Madrid'));
echo "<p>Amanece: " . $fechaHoraAmanecer->format("d/m/Y G:i:sP e") . "</p>";
$fechaHoraOscurecer = new DateTime($xml->city->sun['set'], new DateTimeZone('Europe/Madrid'));
echo "<p>Oscurece: " . $fechaHoraOscurecer->format("d/m/Y G:i:sP e") . "</p>";
$fechaHoraActualizacion = new DateTime($xml->lastupdate['value'], new DateTimeZone('Europe/Madrid'));
echo "<p>Última actualización: " .$fechaHoraActualizacion->format("d/m/Y G:i:sP e") ."</p>";
<?xml version="1.0" encoding="UTF-8"?> <current> <city id="3114711" name="Oviedo"> <coord lon="-5.8448" lat="43.3603"> </coord> <country>ES</country> <timezone>7200</timezone> <sun rise="2024-05-19T04:55:01" set="2024-05-19T19:44:59"> </sun> </city> <temperature value="14.25" min="13.25" max="15.71" unit="celsius"> </temperature> <feels_like value="13.9" unit="celsius"> </feels_like> <humidity value="83" unit="%"> </humidity> <pressure value="1011" unit="hPa"> </pressure> <wind> <speed value="2.24" unit="m/s" name="Light breeze"> </speed> <gusts value="4.02"> </gusts> <direction value="4" code="N" name="North"> </direction> </wind> <clouds value="96" name="overcast clouds"> </clouds> <visibility value="10000"> </visibility> <precipitation mode="no"> </precipitation> <weather number="804" value="nubes" icon="04d"> </weather> <lastupdate value="2024-05-19T12:48:05"> </lastupdate> </current>
SimpleXMLElement Object ( [city] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 3114711 [name] => Oviedo ) [coord] => SimpleXMLElement Object ( [@attributes] => Array ( [lon] => -5.8448 [lat] => 43.3603 ) [0] => ) [country] => ES [timezone] => 7200 [sun] => SimpleXMLElement Object ( [@attributes] => Array ( [rise] => 2024-05-19T04:55:01 [set] => 2024-05-19T19:44:59 ) [0] => ) ) [temperature] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 14.25 [min] => 13.25 [max] => 15.71 [unit] => celsius ) [0] => ) [feels_like] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 13.9 [unit] => celsius ) [0] => ) [humidity] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 83 [unit] => % ) [0] => ) [pressure] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 1011 [unit] => hPa ) [0] => ) [wind] => SimpleXMLElement Object ( [speed] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 2.24 [unit] => m/s [name] => Light breeze ) [0] => ) [gusts] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 4.02 ) [0] => ) [direction] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 4 [code] => N [name] => North ) [0] => ) ) [clouds] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 96 [name] => overcast clouds ) [0] => ) [visibility] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 10000 ) [0] => ) [precipitation] => SimpleXMLElement Object ( [@attributes] => Array ( [mode] => no ) [0] => ) [weather] => SimpleXMLElement Object ( [@attributes] => Array ( [number] => 804 [value] => nubes [icon] => 04d ) [0] => ) [lastupdate] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 2024-05-19T12:48:05 ) [0] => ) ) 1
Ciudad: Oviedo
País: ES
Coordenadas: Longitud -5.8448 grados
Coordenadas: Latitud 43.3603 grados
Temperatura: 14.25 grados Celsius
Temperatura mínima: 13.25 grados Celsius
Temperatura máxima: 15.71 grados Celsius
Temperatura (unidades): celsius
Humedad: 83 %
Presión: 1011 hPa
Velocidad del viento: 2.24 metros/segundo
Tipo de viento: Light breeze
Dirección del viento: 4 grados
Orientación del viento: N
Nombre del viento: North
Nubosidad: 96 %. Descripción: overcast clouds
Visibilidad: 10000 metros
Estado del tiempo: nubes
Amanece: 19/05/2024 4:55:01+02:00 Europe/Madrid
Oscurece: 19/05/2024 19:44:59+02:00 Europe/Madrid
Última actualización: 19/05/2024 12:48:05+02:00 Europe/Madrid