0

Yahooの天気APIから気温の値を取得したいと思います。チュートリアルを見つけましたが、チュートリアルで彼は別の値を取得しています。Yahoo の天気 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 に答える