- <?
- //- 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://www.codesnippet.cn/detail/19112012444.html
来源: http://www.codesnippet.cn/detail/19112012444.html