php采集自中央气象台范围覆盖全国的天气预报代码实例


Posted in PHP onJanuary 04, 2015

本文实例讲述了php采集自中央气象台范围覆盖全国的天气预报代码。分享给大家供大家参考。具体分析如下:

天气预报信息采集自中央气象台,信息准确,覆盖面广,代码简单,返回是json代码,可以用于客户端调用,也可以在服务器端处理后显示,笔者的wordpress天气预报插件就是使用的这段代码,需要注意的是,这段代码会在服务器产生缓存文件,需要在当前目录中新建data文件夹,保证文件夹可写.

php天气预报代码如下:

/* 

作者:    freemouse 

主页:    www.cnphp.info 

接口demo: http://www.cnphp.info/tianqi 

用法: 可以直接调用上面的地址会显示当地的天气信息,也可以这样用 

http://www.cnphp.info/tianqi/?q=江苏省南京市 

**/
$p = $_get['q'];  

$k = 0;  

$encoding = mb_detect_encoding($p);  

if($encoding != "utf-8"){  

        $p = mb_convert_encoding($p,"utf-8","gbk");  

}  

$p_arr = array(  

       "01" => "北京",  

      "02" => "上海",  

      "03" => "天津",  

      "04" => "重庆",  

      "05" => "黑龙江",  

      "06" => "吉林",  

      "07" => "辽宁",  

      "08" => "内蒙古",  

      "09" => "河北",  

      "10" => "山西",  

      "11" => "陕西",  

      "12" => "山东",  

      "13" => "新疆",  

      "14" => "西藏",  

      "15" => "青海",  

      "16" => "甘肃",  

      "17" => "宁夏",  

      "18" => "河南",  

      "19" => "江苏",  

      "20" => "湖北",  

      "21" => "浙江",  

      "22" => "安徽",  

      "23" => "福建",  

      "24" => "江西",  

      "25" => "湖南",  

      "26" => "贵州",  

      "27" => "四川",  

      "28" => "广东",  

      "29" => "云南",  

      "30" => "广西",  

      "31" => "海南",  

      "32" => "香港",  

      "33" => "澳门",  

      "34" => "台湾" 

); 
function find(&$item,$key,$data){  

        global $k;  

        if(preg_match("/$item/u",$data)){  

           $k = $key;  

        }  

} 
function get_data_arr($key){  

        if(!file_exists("./data/city{$key}.xml")){  

            $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" );  

            file_put_contents("./data/city{$key}.xml",$c);  

        }  

        else{  

            $c = file_get_contents("./data/city{$key}.xml");  

        }  

       $arr = explode(",",$c);  

       foreach($arr as $v){  

           $data = explode("|",$v);  

           $ret[$data[0]] = $data[1];  

       }

       return $ret;  

} 
array_walk($p_arr,'find',$p);  

array_walk(get_data_arr($k),'find',$p);  

array_walk(get_data_arr($k),'find',$p);  

$ccode = get_data_arr($k);  

echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html");

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
Zend framework处理一个http请求的流程分析
Feb 08 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
php缓存技术详细总结
Aug 07 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
php实现的mongodb操作类
May 28 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
php生成图片验证码的方法
Apr 15 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 #PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 #PHP
浅谈thinkphp的实例化模型
Jan 04 #PHP
Thinkphp中的curd应用实用要点
Jan 04 #PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 #PHP
thinkphp备份数据库的方法分享
Jan 04 #PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 #PHP
You might like
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Python工程师面试必备25条知识点
2018/01/17 Python
使用Python写一个小游戏
2018/04/02 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
python time.strptime格式化实例详解
2021/02/03 Python
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
英文简历自荐信范文
2013/12/11 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
小学生元旦广播稿
2014/02/21 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2015年电教工作总结
2015/05/26 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书