您好,欢迎访问一九零五行业门户网

php调用yahoo sina api天气预报的实现代码

0) { return true; } } //获取woeid $woeid = self::getwoeid(); self::$url = self::$url . $woeid[0]; //获取当天 天气 $xml = self::vget(self::$url); //保存当天 天气到文件 self::cachexml($xml); self::analysisxml($xml); } static public function analysisxml($simple) { $p = xml_parser_create(); xml_parse_into_struct($p, $simple, $vals, $index); xml_parser_free($p); //本周天气 $weekindex = $index['yweather:forecast']; $week = array(); foreach($weekindex as $k=>$v){ $week[$k] = $vals[$v]['attributes']; } unset($index); unset($vals); print_r($week); /* * day 星期 * date 日期 * low 最低温度 * high 最高温度 * test 天气状态 * code 天气图标 */ } /* * 取得地区woeid码 */ static private function getwoeid(){ static $woeid = array(); if(isset($woeid[self::$city])){ return $woeid[self::$city]; } if (file_exists( self::$file_path . self::$woeid_file )) { $woeidstr = file_get_contents(self::$file_path . self::$woeid_file); $woeid = json_decode($woeidstr , true); if(isset($woeid[self::$city])){ return $woeid[self::$city]; } } $geoplaces = http://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text='.self::$city.%20ch'; $xml = simplexml_load_file( $geoplaces ); if(isset($xml->results->place[0])){ $rs = $woeid[self::$city] = $xml->results->place[0]->woeid; //保存到文件 $woeidstr = json_encode($woeid); file_put_contents(self::$file_path . self::$woeid_file, $woeidstr); return $rs; }else{ //如果找不到城市 woeid 默认城市就改为 北京 self::$city = beijing; return self::getwoeid(); } } /** * 创建xml缓存 * @param $contents 要缓存的内容 */ static private function cachexml($contents) { $contents = str_ireplace ( '', \n, $contents ); $contents = mb_convert_encoding ( $contents, 'utf-8', 'gbk' ); file_put_contents ( self::$weatherxml, $contents ) or die ( '没有写权限' ); } /** * 模拟获取内容函数 * @param type $url * @return type */ static private function vget($url) { $user_agent = mozilla/4.0 (compatible; msie 6.0; windows nt 5.2; .net clr 1.1.4322); $curl = curl_init (); // 启动一个curl会话 curl_setopt ( $curl, curlopt_url, $url ); // 要访问的地址 curl_setopt ( $curl, curlopt_ssl_verifypeer, 0 ); // 对认证证书来源的检查 curl_setopt ( $curl, curlopt_ssl_verifyhost, 1 ); // 从证书中检查ssl加密算法是否存在 curl_setopt ( $curl, curlopt_useragent, $user_agent ); // 模拟用户使用的浏览器 @curl_setopt ( $curl, curlopt_followlocation, 1 ); // 使用自动跳转 curl_setopt ( $curl, curlopt_autoreferer, 1 ); // 自动设置referer curl_setopt ( $curl, curlopt_httpget, 1 ); // 发送一个常规的post请求 curl_setopt ( $curl, curlopt_timeout, 120 ); // 设置超时限制防止死循环 curl_setopt ( $curl, curlopt_header, 0 ); // 显示返回的header区域内容 curl_setopt ( $curl, curlopt_returntransfer, 1 ); // 获取的信息以文件流的形式返回 $tmpinfo = curl_exec ( $curl ); // 执行操作 if (curl_errno ( $curl )) { curl_close ( $curl ); // 关闭curl会话 die('errno' . curl_error ( $curl )) ; } curl_close ( $curl ); // 关闭curl会话 return $tmpinfo; // 返回数据 }}weather::getxml(changsha);
复制代码
2,新浪天气地址:http://php.weather.sina.com.cn代码:
0) { return true; } } $contents = self::vget( self::$url . self::$city ); self::cachexml ( $contents ); self::analysisxml(); } /** * 解析xml */ static public function analysisxml() { $xml = simplexml_load_file(self::$weatherxml ); print_r($xml); } /** * 创建xml缓存 * @param $contents 要缓存的内容 */ static private function cachexml($contents) { $contents = str_ireplace ( '', \n, $contents ); file_put_contents ( self::$weatherxml, $contents ) or die ( '没有写权限' ); } /** * 模拟获取内容函数 * @param type $url * @return type */ static private function vget($url) { $user_agent = mozilla/4.0 (compatible; msie 6.0; windows nt 5.2; .net clr 1.1.4322); $curl = curl_init (); // 启动一个curl会话 curl_setopt ( $curl, curlopt_url, $url ); // 要访问的地址 curl_setopt ( $curl, curlopt_ssl_verifypeer, 0 ); // 对认证证书来源的检查 curl_setopt ( $curl, curlopt_ssl_verifyhost, 1 ); // 从证书中检查ssl加密算法是否存在 curl_setopt ( $curl, curlopt_useragent, $user_agent ); // 模拟用户使用的浏览器 @curl_setopt ( $curl, curlopt_followlocation, 1 ); // 使用自动跳转 curl_setopt ( $curl, curlopt_autoreferer, 1 ); // 自动设置referer curl_setopt ( $curl, curlopt_httpget, 1 ); // 发送一个常规的post请求 curl_setopt ( $curl, curlopt_timeout, 120 ); // 设置超时限制防止死循环 curl_setopt ( $curl, curlopt_header, 0 ); // 显示返回的header区域内容 curl_setopt ( $curl, curlopt_returntransfer, 1 ); // 获取的信息以文件流的形式返回 $tmpinfo = curl_exec ( $curl ); // 执行操作 if (curl_errno ( $curl )) { curl_close ( $curl ); // 关闭curl会话 die('errno' . curl_error ( $curl )) ; } curl_close ( $curl ); // 关闭curl会话 return $tmpinfo; // 返回数据 }}weather::getxml();
复制代码
其它类似信息

推荐信息