龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 借用Google API 写一个查看天气预报的类

时间:2014-07-30 12:41来源:网络整理 作者:网络 点击:
分享到:
借用Google API 写一个查看天气预报的类 [代码片段(139行)]
<?
//- Describe: 
//- Author: liuguichun
//- Link: 
//- CreateTime: 2010-6-21
//- UpdateTime: 
//- Package: 
class weather {
 static $url = '<a href="http://www.google.com/ig/api?hl=zh-cn&weather=">http://www.google.com/ig/api?hl=zh-cn&weather=';
 static $city = 'Beijing'; //默认城市北京
 static $weatherXML = '';
 /**
  * 获得远程xml并缓存到本地
  */
 static public function getXML() {
  header ( 'Content-Type: text/html; charset = utf-8' );
  if (isset ( $_GET ['city'] )) {
   self::$city = empty ( $_GET ['city'] ) ? 'Beijing' : $_GET ['city'];
  }
  $contents = file_get_contents ( self::$url . self::$city ) or die ( '查询出错' );
  self::$weatherXML = date ( "Ymd" ) . '-' . self::$city . '-weather.xml';
  if (is_file ( self::$weatherXML )) {
   $fileTime = filemtime ( self::$weatherXML );
   $stater = time () - $fileTime - 60 * 60 * 2;
   if ($stater < 0) {
    self::cacheXML ( $contents );
   }
   return true;
  }
  self::cacheXML ( $contents );
 }
 /**
  * 解析xml
  */
 static public function analysisXML() {
  if (is_file ( self::$weatherXML )) {
   $xml = simplexml_load_file ( self::$weatherXML );
  } else {
   $xml = simplexml_load_file ( self::$url . self::$city );
  }
  $xml = ( array ) $xml;
  $city = ( array ) $xml ['weather']->forecast_information->city;
  if (isset ( $xml ['weather']->problem_cause )) {
   $problem = ( array ) $xml ['weather']->problem_cause;
   echo $problem ['@attributes'] ['data'];
   return;
  }

  $conditions = ( array ) $xml ['weather']->current_conditions->condition;
  $humidity = ( array ) $xml ['weather']->current_conditions->humidity;
  $temp_c = ( array ) $xml ['weather']->current_conditions->temp_c;
  $conditions_icon = ( array ) $xml ['weather']->current_conditions->icon;
  $wind_condition = ( array ) $xml ['weather']->current_conditions->wind_condition;
  $forecast = ( array ) $xml ['weather'];
  $forecast = ( array ) $forecast ['forecast_conditions'];
  $html = '';
  foreach ( $forecast as $key => $val ) {

   ${'day_of_week_' . $key} = ( array ) $val->day_of_week;
   ${'low_' . $key} = ( array ) $val->low;
   ${'high_' . $key} = ( array ) $val->high;
   ${'icon_' . $key} = ( array ) $val->icon;
   ${'condition_' . $key} = ( array ) $val->condition;
   $html .= "

{${'day_of_week_'.$key}['@attributes']['data']}

        http://www.google.com{${'icon_'.$key}['@attributes']['data']}\\ " width=40 height=40>

        {${'low_'.$key}['@attributes']['data']}°C | {${'high_'.$key}['@attributes']['data']}°C
";

  }
  self::printCss ();
  echo <<   

{$city['@attributes']['data']}

http://www.google.com{$conditions_icon['@attributes']['data' ]}" width=40 height=40>

{$temp_c['@attributes']['data']}°C

当前: {$conditions['@attributes']['data']}

        {$wind_condition['@attributes']['data']}

        {$humidity['@attributes']['data']}

 $html

weather;

 }
 /**
  * 打印样式
  */
 static public function printCss() {
  echo << 

css;
 }
 /**
  * 创建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 ( '没有写权限' );
 }
}
weather::getXML ();
weather::analysisXML ();
?>

//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接