0

这是关于Google Weather Report XML的。

谷歌在做什么计算?

当我使用weather=London,UK关键字进行谷歌搜索时,它会显示类似于此屏幕截图的内容,

替代文字 http://img293.imageshack.us/img293/4746/weathergoogle.jpg

在我的 XML 中没有像 26, 11, 26, 22 no

我的 XML 如下所示。

替代文字

天气预报中涉及的计算是什么?

如何将这些放入 PHP 变量中?

4

4 回答 4

4

没有计算。您链接的 XML 具有以下节点:

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

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

前两个是当前天气的摄氏和华氏温度,对应于 Google Seach 页面上的左侧部分。高低是谷歌搜索页面显示的预测(仅限摄氏度)。

PHP 提供了许多用于处理 XML 的库。最突出的是DOMXMLReaderSimpleXML。查看 PHP 手册中有关如何使用它们的示例。Stack Overflow 也有很多关于它们使用的问题和答案。


更新后编辑:似乎 Google 会根据请求提要的浏览器中设置的语言为您提供华氏度的高/低值。将语言参数添加hl=[languagecode]到 URL 以查看您是否可以在摄氏度中请求此参数,或者 - 如果不可能 -手动转换高/低

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

实际上,只需将 &hl=en-GB 添加到 URL 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 天气 API,PHP。

于 2010-06-23T09:47:02.060 回答
0

正如 AR 解释的那样,返回摄氏度值真的就像传递语言代码一样简单。

Google 天气 API 没有正式记录,但我发现这 2 个链接很有用:

于 2010-12-31T15:22:05.963 回答