我想从雅虎的天气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/
如果某人有更好的解决方案来获得价值,请毫不犹豫地说出来。 :)
答案 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。