这是关于Google Weather Report XML的。
谷歌在做什么计算?
当我使用weather=London,UK关键字进行谷歌搜索时,它会显示类似于此屏幕截图的内容,
替代文字 http://img293.imageshack.us/img293/4746/weathergoogle.jpg
在我的 XML 中没有像 26, 11, 26, 22 no
我的 XML 如下所示。
天气预报中涉及的计算是什么?
如何将这些放入 PHP 变量中?
这是关于Google Weather Report XML的。
谷歌在做什么计算?
当我使用weather=London,UK关键字进行谷歌搜索时,它会显示类似于此屏幕截图的内容,
替代文字 http://img293.imageshack.us/img293/4746/weathergoogle.jpg
在我的 XML 中没有像 26, 11, 26, 22 no
我的 XML 如下所示。
天气预报中涉及的计算是什么?
如何将这些放入 PHP 变量中?
没有计算。您链接的 XML 具有以下节点:
<temp_f data="70"/>
<temp_c data="21"/>
和
<low data="11"/>
<high data="26"/>
前两个是当前天气的摄氏和华氏温度,对应于 Google Seach 页面上的左侧部分。高低是谷歌搜索页面显示的预测(仅限摄氏度)。
PHP 提供了许多用于处理 XML 的库。最突出的是DOM、XMLReader和SimpleXML。查看 PHP 手册中有关如何使用它们的示例。Stack Overflow 也有很多关于它们使用的问题和答案。
更新后编辑:似乎 Google 会根据请求提要的浏览器中设置的语言为您提供华氏度的高/低值。将语言参数添加hl=[languagecode]
到 URL 以查看您是否可以在摄氏度中请求此参数,或者 - 如果不可能 -手动转换高/低:
from Fahrenheit to Fahrenheit
Celsius [°C] = ([°F] − 32) × 5⁄9 [°F] = [°C] × 9⁄5 + 32
实际上,只需将 &hl=en-GB 添加到 URL http://www.google.com/ig/api?weather=London,UK&hl=en-GB的末尾即可 。对于其他语言,存在解析问题(与 UTF-8 相关),但对于英语要转到摄氏度,您只需切换到 GB 区域设置(默认设置为 US)。
<?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'])); ?>° 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'])); ?>° C - <?php echo round(conver_f_c($forecast->high['data'])); ?>° 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。
正如 AR 解释的那样,返回摄氏度值真的就像传递语言代码一样简单。
Google 天气 API 没有正式记录,但我发现这 2 个链接很有用: