一、请求数据
首先需要能有取得天气数据的接口,这样的接口网上有很多。比如google, yahoo,天气网都提供天气接口
方倍工作室的API已经能提供全国各地的天气预报,使用方倍的API无需再建立城市对应关系表
使用方式为直接在URL中提交城市名称即可,如果找不到城市名称,请先做urlencode
调用url方法:
- http://api2.sinaapp.com/search/weather/?appkey=0020130430&appsecert=fa6095e113cd28fd&reqtype=text&keyword=上海
- //或者做一次urlencode后再提交
- http://api2.sinaapp.com/search/weather/?appkey=0020130430&appsecert=fa6095e113cd28fd&reqtype=text&keyword=%E6%B7%B1%E5%9C%B3
返回格式如下:(返回中自带换行\n操作,不用自己再添加)
- {
- "errcode": "0",
- "msgtype": "text",
- "text": {
- "content": "【湘潭】天气实况 温度:12℃ 湿度:59% 风速:西北风3级\n03月10日 周日 10℃~21℃ 阴转多云 北风转南风小于3级\n03月11日 周一 13℃~28℃ 多云 南风小于3级\n03月12日 周二 10℃~22℃ 小雨转阴 北风小于3级\n技术支持 方倍工作室"
- }
- }
一个完整的请求类似如下:
- $url = "http://api2.sinaapp.com/search/weather/?appkey=0020130430&appsecert=fa6095e113cd28fd&reqtype=text&keyword=%E6%B7%B1%E5%9C%B3";
- $weatherJson = file_get_contents($url);
- $weather = json_decode($weatherJson, true);
- $contentStr = $weather['text']['content'];
如果使用城市名+天气方式查询,则先进行城市名提取:
- else if (substr($keyword, -6, strlen($keyword)) == "天气"){
- $cityname = trim(substr($keyword, 0, strlen($keyword) - 6));
二,效果演示
使用城市名称查询天气预报: