天氣預報信息采集自中央氣象臺,信息準確,覆蓋面廣,代碼簡單,返回是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];
- } //開源代碼Vevb.com
- 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");
新聞熱點
疑難解答