0

これは、Google WeatherReportXMLについてです。

Googleが行っている計算は何ですか?

Weather = London、UKキーワードでグーグルすると、このスクリーンショットのようなものが表示されます。

代替テキストhttp://img293.imageshack.us/img293/4746/weathergoogle.jpg

私のXMLには、26、11、26、22のようなものはありません。

私のXMLは次のようになります。

代替テキスト

天気予報に含まれる計算は何ですか?

これらをPHP変数に取り込む方法は?

4

4 に答える 4

4

計算はありません。リンクした XML には次のノードがあります。

<temp_f data="70"/>
<temp_c data="21"/>

<low data="11"/>
<high data="26"/>

最初の 2 つは現在の天気の摂氏と華氏の温度で、Google 検索ページの左側の部分に対応しています。High と Low は、Google 検索ページに表示される予測 (摂氏のみ) です。

PHP には、XML を操作するための多数のライブラリが用意されています。最も顕著なのはDOMXMLReader、およびSimpleXMLです。それらの使用方法については、PHP マニュアルの例を参照してください。Stack Overflow には、その使用法に関する多くの質問と回答もあります。


更新後の編集: フィードを要求しているブラウザで設定されている言語に応じて、Google が華氏で高値/低値を提供しているようです。URL に言語パラメーターを追加して、hl=[languagecode]これを摂氏でリクエストできるかどうかを確認するか、それが不可能な場合は手動で高低を変換します

            from Fahrenheit               to Fahrenheit
Celsius     [°C] = ([°F] − 32) × 5⁄9      [°F] = [°C] × 9⁄5 + 32
于 2010-06-23T08:49:18.110 に答える
1

実際には、URL の末尾に &hl=en-GB を追加するのと同じくらい簡単 ですhttp://www.google.com/ig/api?weather=London,UK&hl=en-GB が機能するはずです。他の言語では解析の問題があります (UTF-8 関連) が、英語を摂氏に変更するには、GB ロケールに切り替える必要があります (デフォルトでは US が設定されています)。

于 2010-11-09T23:51:06.413 に答える
0
    <?php
        $xml = simplexml_load_file('http://www.google.com/ig/api?weather=London');
        $information = $xml->xpath("/xml_api_reply/weather/forecast_information");
        $current = $xml->xpath("/xml_api_reply/weather/current_conditions");
        $forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
    ?>
    <html>
    <head>
        <title>Google Weather API</title>
    </head>
    <body>
        <h1><?php print $information[0]->city['data']; ?></h1>
        <h2>Today's weather</h2>
        <div class="weather">
            <img src="<?php echo  'http://www.google.com' . $current[0]->icon['data']?>" alt="weather"?>
            <span class="condition">
            <?php echo round(conver_f_c($current[0]->temp_f['data'])); ?>&deg; C,
            <?php echo $current[0]->condition['data'] ?>
            </span>
        </div>
        <h2>Forecast</h2>
        <?php foreach ($forecast_list as $forecast) : ?>
            <div class="weather">
                <img src="<?php echo 'http://www.google.com' . $forecast->icon['data']?>" alt="weather"?>
                <div><?php echo $forecast->day_of_week['data']; ?></div>
                <span class="condition">
                    <?php echo round(conver_f_c($forecast->low['data'])); ?>&deg; C - <?php echo round(conver_f_c($forecast->high['data'])); ?>&deg; C,
                    <?php echo $forecast->condition['data'] ?>
                </span>
            </div>
        <?php endforeach ?>
    </body>
</html>

<?php
function conver_f_c($F){

    return  $C = ($F - 32) * 5/9;
}

このスニペットは私の問題、画像付きのGoogle Weather API、PHPを修正しました。

于 2010-06-23T09:47:02.060 に答える
0

AR が説明しているように、摂氏の値を返すことは、言語コードを渡すのと同じくらい簡単です。

Google weather API は正式に文書化されていませんが、次の 2 つのリンクが役立つことがわかりました。

于 2010-12-31T15:22:05.963 に答える