0

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

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

RSS 提要: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/

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

4

1 回答 1

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是通向疯狂的道路

于 2012-04-09T14:35:56.390 回答