Obtener el estado del tiempo actual a partir de un XML utilizando PHP

Para aquellos que no sabían, desde hace algunos meses Google restringió el acceso al público a su API del clima. Buscando por internet me encontré con que varias páginas nos daban acceso gratuito a sus XML para obtener el estado del tiempo. En este tutorial veremos como parsear XML en PHP para tener el clima actual en nuestra página.

Primero que nada, me registré en World Weather Online para obtener una API key gratuita para poder usar el servicio (El registro es rápido).

EL TIEMPO EN NUESTRO SITIO

Para no repetir el código por todo el sitio, crearemos una función en la que solamente tendremos que pasar la ciudad y país de donde queremos mostrar el clima actual.

Lo primero que hacemos en la función que creamos, es pasar la ciudad y el país de donde queremos obtener el estado del tiempo por la función PHP urlencode() para codificar los espacios como signos de suma para que la url se pueda crear correctamente.

A continuación parseamos la dirección del archivo XML con la función simplexml_load_file() a que le tendremos que colocar la respectiva API key que nos dieron al momento de registrarnos.

Este paso es opcional: Con la función que creamos, add_dashes() — ya la veremos más adelante — lo que hacemos es convertir la descripción del tiempo de por ejemplo “Partly cloud” a “partly-cloud” para poder colocar nuestras propios iconos (nubes, sol, lluvia, etc) con CSS.

La función spanish_forecast_man() la creamos para traducir la descripción del tiempo de “Sunny” a “Soleado”.

Me tome la libertad también de agregar a nuestra función de que si el nivel de precipitaciones es mayor de cero (0.0) lo muestre para que se vea cuantos milímetros de agua ha caído.

Para mostrar el tiempo en nuestro sitio solamente tenemos que escribir la función de la siguiente manera: get_weather_bydinvaders( 'Ciudad,Pais' );

LA FUNCIÓN ADD_DASHES()

Como explicaba antes, creamos la función add_dashes para poder mostrar nuestros propios iconos con la descripción del tiempo. Pero para eso antes tenemos que convertir esa descripción en una clase CSS.

Lo primero que hacemos es pasar la información por la función trim() que lo que hace es quitar (si hay) los espacios de adelante y atrás de una cadena de texto. Mientras que con la función strtolower() lo que hacemos es transformar todos los caracteres alfabéticos de una cadena en minúsculas.

Con explode() separamos todas las palabras que hay en la cadena (esto nos dará un array()) que lo uniremos mediante un guión con la función implode(). De esta forma Partly Cloud se transformará en partly-cloud.

GIVE ME THE FORECAST IN SPANISH MAN!

Lo que haremos con esta función es convertir la descripción del tiempo del ingles al español.

En esta función creamos dos array(), uno con la descripción del tiempo en ingles y otra como será en español. Recuerden respetar las posiciones dentro de cada array() porque se suplanta numéricamente . Para que les quede más claro esto, vamos a hacer un var_dump() de los dos array():

Como pueden ver, “Soleado” corresponde a “Sunny” porque están en la posición [0], “Despejado” corresponde a “Clear” porque están en la posición [1] y así sucesivamente.

Finalmente con la función PHP str_replace() reemplazamos el o los datos del array $english por el o los correspondientes que están en el array() $spanish si se encuentra alguna coincidencia.

DescargaDemo

Modificado por última vez el día 26 de diciembre de 2012 a las 07:30
Posted in PHP
Scroll to top