`

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

    博客分类:
  • php
阅读更多
<?
//- Describe:
//- Author: liuguichun
//- Link:
//- CreateTime: 2010-6-21
//- UpdateTime:
//- Package:
class weather {
 static $url = '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 ();
?>
分享到:
评论

相关推荐

    Android源码-使用百度APIStore实现天气预报APP

    Android 百度APIStore天气预报APP运用百度APIStore免费提供的数据,进行的开发。除了正常的json解析之外,还有数据库存储。布局借用的是腾讯天气的界面。略微做了修改。 [注意:本资源来自网络,如有侵权,请联系我...

    微信或其他借用天气api的400个城市id参数

    微信或其他借用天气api的城市id参数 调用的是中国国家气象局提供的天气预报API接口 接口地址:http: m weather com cn data 101190401 html URL中的数字指代城市的编号101190401(苏州) 其他城市对应关系将在下面...

    用java编辑城市共享雨伞系统代码,与天气预报联动设置.docx

    首先,你需要一个提供天气预报数据的API服务,例如OpenWeatherMap、AccuWeather或其他类似的服务。在你的Java代码中,导入相应的库以便调用其提供的API接口。在示例中,库的导入语句为`import ...

    简单物品借用管理系统

    【简单物品借用管理系统】是一个基于ASP(Active Server Pages)技术和Access数据库的应用程序,主要用于实现对物品借用流程的简便管理。ASP是一种服务器端脚本环境,它允许开发人员使用HTML、VBScript或JScript等...

    笔记本借用登记表.pdf

    根据提供的信息,标题、描述和标签均指向一个文件名“笔记本借用登记表.pdf”。这个文件似乎是一个与IT设备管理相关的文档,用于记录笔记本电脑的借用情况。尽管没有提供完整的表格内容,但我们可以从这个标题推断出...

    物资借用管理信息系统源代码

    2.系统质量:我们的物资借用系统是一个全新的、目前暂时无人涉及的新系统。物资借用系统可以使流程简化、方便双方使用。学院办公室可以通过该系统直接显示余量、地址、联系方式等信息,社团和部门可以直接通过该系统...

    借用Google的Javascript API Loader来加速你的网站

    3. **Prototype** - 一个早期流行的JavaScript框架,提供了类、扩展等面向对象的特性。 4. **script.aculo.us** - 与Prototype配合使用的库,专注于丰富的用户界面和视觉效果。 5. **MooTools** - 另一个JavaScript...

    教室借用软件 VB

    在这个“教室借用软件 VB”的项目中,我们将深入探讨如何利用VB来设计一个实用的教室借用管理系统。 一、系统需求分析 1. 用户管理:系统应具备管理员和普通用户两种角色,管理员可以进行教室管理和用户管理,普通...

    基于Android的教室查询借用系统

    【基于Android的教室查询借用系统】是一个专门为教育机构设计的应用程序,它允许用户方便地查看教室的使用情况并申请借用教室。此系统充分利用了Android平台的功能,为用户提供了一个直观、易用的界面来管理和协调...

    物品借用管理程序

    在信息技术领域,物品借用管理程序是一个常见的应用场景,尤其在企事业单位、学校等组织内部,对物品的借出、归还进行有序管理显得尤为重要。本文将深入探讨如何利用ASP(Active Server Pages)技术开发这样一个系统...

    借用jq框架写的js弹出层

    "借用jq框架写的js弹出层"这个项目,就是利用jQuery来创建一个基本的弹出层功能,虽然其界面设计可能较为简单,但对于初学者来说,它是一个很好的学习起点,能够帮助理解如何结合jQuery来实现动态用户界面。...

    图书借用管理系统

    《图书借用管理系统》是一款基于Delphi编程语言与...综上所述,《图书借用管理系统》是一个综合运用了数据库技术、编程语言、用户交互设计等多个IT领域的软件产品,它的设计和实现充分体现了IT在实际业务场景中的应用。

    工具借用登记表.doc

    "工具借用登记表.doc" 是一种有效的管理工具,用于记录和控制组织内部工具的借用情况,确保资产的有效利用和追踪。这个文档通常包含以下几个关键部分: 1. **工具编号/名称**:这是每个工具的唯一标识符,用于精确...

    工具借用登记表表格格式.pdf

    综上所述,这个工具借用登记表表格格式旨在建立一个有效的工具管理流程,通过规范化的信息记录,实现工具的有序借用和归还,减少丢失或损坏的风险,同时优化资源的分配和使用。对于IT团队来说,类似这样的管理工具...

    校园借用课室管理系统.zip

    【校园借用课室管理系统】是一个基于Java Swing技术开发的应用程序,专为高校设计,用于管理教室的借用情况。Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件和功能,使得开发者能够创建出功能强大...

    java jsp 毕业设计 教室借用管理系统

    总的来说,Java JSP毕业设计的教室借用管理系统是一个典型的Web应用实例,它综合运用了Java Web开发的多种技术和方法,为高校提供了一套便捷、高效的教室资源管理方案。通过实际操作,学生能够深入理解Web开发流程,...

    汽车借用合同范本_房屋借用合同_房屋借用合同范本.pdf

    本文档提供了一个详细的汽车借用合同范本,涵盖了房屋借用合同的各个方面。该合同旨在明确出借方和借用方的权利和义务关系,确保双方的利益得到保护。 首先,合同规定了借用期限、借用用途、借用期满、借用期内的...

    设备借用凭证 .pdf打包整理.zip

    【标题】"设备借用凭证.pdf打包整理.zip"的文件是一个包含设备借用相关凭证的PDF文档集合,已经被压缩成ZIP格式以便于存储和传输。这样的文件通常由组织或公司使用,用于管理和记录设备的借用情况,确保设备的合理...

    最新电脑借用承诺书教职工借用笔记本电脑协议DOC任意编辑版.docx

    【电脑借用承诺书教职工借用笔记本电脑协议】 在教育领域中,电脑已经成为不可或缺的教学辅助工具,尤其是在信息化教育的时代背景下。为了规范教职工对学校电脑资源的合理使用,确保设备的有效管理和维护,甲方...

Global site tag (gtag.js) - Google Analytics