2012-04-09 3 views
0

Я хотел бы получить значение температуры от API погоды Yahoo. Я нашел учебник, но в учебнике он получает другое значение. Может ли кто-нибудь помочь мне изменить учебник, чтобы он мог получить временное значение из RSS-ленты погоды Yahoo?yahoo weather Api

<yweather:condition text="Partly Cloudy" code="30" temp="3" 
        date="Mon, 09 Apr 2012 3:48 pm EEST" /> 

RSS Feed: http://weather.yahooapis.com/forecastrss?w=566473&u=c

В учебнике я следовал: http://css-tricks.com/using-weather-data-to-change-your-websites-apperance-through-php-and-css/

Если кто-то имеет лучшее решение для получения значения, не стесняйтесь сказать. :)

ответ

2

Это кажется довольно простым. Из учебника:

Поскольку единственный бит информации, мы заботимся о том, атрибут yweather:condition элемента text, мы будем избегать создания объекта синтаксического анализа XML и использовать короткое регулярное выражение.

Так, просто посмотрите на строку с регулярным выражением:

$weather_class = format_result(
    get_match('/<yweather:condition text="(.*)"/isU', $data) 
); 

Это на самом деле плохой регулярное выражение, поскольку он предполагает text всегда будет первый атрибут (и что там Всегда будет это странное двойное пространство. Вот регулярное выражение, которое получит атрибут temp независимо от того, где он падает:

/<yweather:condition\s+(?:.*\s)?temp="(.+)"/isU 

Замените это для регулярного выражения, данного для get_match(), и вам должно быть хорошо идти.

О, и чтобы я не стартовал так, чтобы не сказать так: Попытка разобрать произвольное HTML XML с регулярными выражениями is the path to madness.

Смежные вопросы