雅虎天气Api

时间:2012-04-09 14:05:25

标签: php rss yahoo weather

我想从雅虎的天气API中获取温度值。我找到了一个教程,但在教程中他得到了不同的价值。有人可以帮我修改教程,它可以从雅虎的天气RSS源中获取临时值吗?

<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/

如果某人有更好的解决方案来获得价值,请毫不犹豫地说出来。 :)

1 个答案:

答案 0 :(得分:2)

这看起来非常简单。从教程:

  

由于我们关心的唯一信息是yweather:condition元素的text属性,因此我们将避免创建XML解析对象并使用简短的正则表达式。

所以,只需看看正则表达式的行:

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

这实际上是一个糟糕的正则表达式,因为它假定text将始终是第一个属性(并且总是会有那个奇怪的双空格。这是一个正则表达式,它将获得{{1} }属性,无论它在哪里:

temp

将其替换为/<yweather:condition\s+(?:.*\s)?temp="(.+)"/isU 的正则表达式,你应该好好去。

哦,以免我因为不这样说而被踢掉:试图用正则表达式is the path to madness解析任意 HTML XML。

相关问题