Php weather forecast code collected from the Central Meteorological Observatory covers the whole country

Source: Internet
Author: User
Keywords Network programming PHP tutorial
Tags array_walk cache calls client code create data directory

The php weather forecast code is collected from the Central Meteorological Observatory and covers the entire country
Weather information collected from the Central Meteorological Observatory, accurate information, wide coverage, the code is simple. Return json code can be used for client calls can also be displayed in the server-side processing, the author of the WordPress weather forecast plug-in is the use of this code Oh. Note that this code will generate a cache file on the server, you need to create a new data folder in the current directory to ensure that the folder can be written

Author: freemouse
Homepage: www.cnphp.info
Interface demo: http://www.cnphp.info/tianqi
Usage: You can call the above address will display the local weather information, you can also use
http://www.cnphp.info/tianqi/?q= Nanjing City, Jiangsu Province
** /

$ 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" => "Beijing",
"02" => "Shanghai",
"03" => "Tianjin",
"04" => "Chongqing",
"05" => "Heilongjiang",
"06" => "Jilin",
"07" => "Liaoning",
"08" => "Inner Mongolia",
"09" => "Hebei",
"10" => "Shanxi",
"11" => "Shaanxi",
"12" => "Shandong",
"13" => "Xinjiang",
"14" => "Tibet",
"15" => "Qinghai",
"16" => "Gansu",
"17" => "Ningxia",
"18" => "Henan",
"19" => "Jiangsu",
"20" => "Hubei",
"21" => "Zhejiang",
"22" => "Anhui",
"23" => "Fujian",
"24" => "Jiangxi",
"25" => "Hunan",
"26" => "Guizhou",
"27" => "Sichuan",
"28" => "Guangdong",
"29" => "Yunnan",
"30" => "Guangxi",
"31" => "Hainan",
"32" => "Hong Kong",
"33" => "Macau",
"34" => "Taiwan"
);

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");

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.