通过城市代码获取免费天气预报
这里主要用到就是通过城市名称获取城市代码,拼装URL去方位免费天气预报的网站获取资源信息,然后保存解析,展现给user。
如果想要运行下面的代码,首先要新建一个PHP的project,把下面三个文件拷贝进去,然后开启server,在浏览器上运行,如果不能访问,可以转换下你PC的代理,应该可以访问。有问题可以联系我~谢谢
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><form action="weatherInfo.php" method="post">CITY: <input type="text" name="city"/><input type="submit"/></form></body></html>
<?php/* * Created on Aug 1, 2012 * * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Templates */ini_set('default_charset','utf-8');echo 'weather information<br/>';$city = $_POST["city"];$weatherInfo = getInfo($city);save($weatherInfo);display($weatherInfo);function getInfo($city) {$url = "http://m.weather.com.cn/data/" . getCityCode($city) . ".html";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_PROXY, "xxx.xxx.xxx:80");curl_setopt($ch, CURLOPT_PROXYPORT, 80);$data = curl_exec($ch);curl_close($ch);return $data;}function save($content){$fileName = "./info.txt";$file = fopen($fileName, "w");fwrite($file, $content);fclose($file);}function getCityCode($city) {$content = file_get_contents("./city.txt");$cities = json_decode($content);return $cities-> {$city};}function display($content) {$info = json_decode($content);$weatherInfo = $info->{"weatherinfo"};showToday($weatherInfo);echo "<br/>";showTomorrow($weatherInfo);}function showToday($weatherInfo){echo "城市:" . $weatherInfo->{"city"} . "<br/>";echo "日期:" . $weatherInfo->{"date_y"} . " " . $weatherInfo->{"week"} . "<br/>";echo "温度:" . $weatherInfo->{"temp1"} . "<br/>" ;echo "天气:" . $weatherInfo->{"weather1"} . " " . $weatherInfo->{"wind1"} . "<br/>";echo $weatherInfo->{"index_d"} . "<br/>";}function showTomorrow($weatherInfo){echo "城市:" . $weatherInfo->{"city"} . "<br/>";echo "日期:" . getDateByCount(1) . " " . getDayByCount(1) . "<br/>";echo "温度:" . $weatherInfo->{"temp2"} . "<br/>" ;echo "天气:" . $weatherInfo->{"weather2"} . " " . $weatherInfo->{"wind2"} . "<br/>";echo $weatherInfo->{"index48_d"} . "<br/>";}function getDateByCount($count){$time = time() + 60 * 60 * 24 * $count;return date("Y年n月d日", $time);}function getDayByCount($count){$time = time() + 60 * 60 * 24 * $count;return getWeek(date("N", $time));}function getWeek($num){switch ($num){case "0":return "星期天";break;case "1":return "星期一";break;case "2":return "星期二";break;case "3":return "星期三";break;case "4":return "星期四";break;case "5":return "星期五";break;case "6":return "星期六";break;default:return "数字:" . $num . " 没有对应的week!";break;}}
{"北京":"101010100","朝阳":"101010300","顺义":"101010400","怀柔":"101010500","通州":"101010600","昌平":"101010700","延庆":"101010800","丰台":"101010900","石景山":"101011000","大兴":"101011100","房山":"101011200","密云":"101011300","门头沟":"101011400","平谷":"101011500","八达岭":"101011600","佛爷顶":"101011700","汤河口":"101011800","密云上甸子":"101011900","斋堂":"101012000","霞云岭":"101012100","北京城区":"101012200","海淀":"101010200","天津":"101030100","宝坻":"101030300","东丽":"101030400","西青":"101030500","北辰":"101030600","蓟县":"101031400","汉沽":"101030800","静海":"101030900","津南":"101031000","塘沽":"101031100","大港":"101031200","武清":"101030200","宁河":"101030700","上海":"101020100","宝山":"101020300","嘉定":"101020500","南汇":"101020600","浦东":"101021300","青浦":"101020800","松江":"101020900","奉贤":"101021000","崇明":"101021100","徐家汇":"101021200","闵行":"101020200","金山":"101020700","石家庄":"101090101","张家口":"101090301","承德":"101090402","唐山":"101090501","秦皇岛":"101091101","沧州":"101090701","衡水":"101090801","邢台":"101090901","邯郸":"101091001","保定":"101090201","廊坊":"101090601","郑州":"101180101","新乡":"101180301","许昌":"101180401","平顶山":"101180501","信阳":"101180601","南阳":"101180701","开封":"101180801","洛阳":"101180901","商丘":"101181001","焦作":"101181101","鹤壁":"101181201","濮阳":"101181301","周口":"101181401","漯河":"101181501","驻马店":"101181601","三门峡":"101181701","济源":"101181801","安阳":"101180201","合肥":"101220101","芜湖":"101220301","淮南":"101220401","马鞍山":"101220501","安庆":"101220601","宿州":"101220701","阜阳":"101220801","亳州":"101220901","黄山":"101221001","滁州":"101221101","淮北":"101221201","铜陵":"101221301","宣城":"101221401","六安":"101221501","巢湖":"101221601","池州":"101221701","蚌埠":"101220201","杭州":"101210101","舟山":"101211101","湖州":"101210201","嘉兴":"101210301","金华":"101210901","绍兴":"101210501","台州":"101210601","温州":"101210701","丽水":"101210801","衢州":"101211001","宁波":"101210401","重庆":"101040100","合川":"101040300","南川":"101040400","江津":"101040500","万盛":"101040600","渝北":"101040700","北碚":"101040800","巴南":"101040900","长寿":"101041000","黔江":"101041100","万州天城":"101041200","万州龙宝":"101041300","涪陵":"101041400","开县":"101041500","城口":"101041600","云阳":"101041700","巫溪":"101041800","奉节":"101041900","巫山":"101042000","潼南":"101042100","垫江":"101042200","梁平":"101042300","忠县":"101042400","石柱":"101042500","大足":"101042600","荣昌":"101042700","铜梁":"101042800","璧山":"101042900","丰都":"101043000","武隆":"101043100","彭水":"101043200","綦江":"101043300","酉阳":"101043400","秀山":"101043600","沙坪坝":"101043700","永川":"101040200","福州":"101230101","泉州":"101230501","漳州":"101230601","龙岩":"101230701","晋江":"101230509","南平":"101230901","厦门":"101230201","宁德":"101230301","莆田":"101230401","三明":"101230801","兰州":"101160101","平凉":"101160301","庆阳":"101160401","武威":"101160501","金昌":"101160601","嘉峪关":"101161401","酒泉":"101160801","天水":"101160901","武都":"101161001","临夏":"101161101","合作":"101161201","白银":"101161301","定西":"101160201","张掖":"101160701","广州":"101280101","惠州":"101280301","梅州":"101280401","汕头":"101280501","深圳":"101280601","珠海":"101280701","佛山":"101280800","肇庆":"101280901","湛江":"101281001","江门":"101281101","河源":"101281201","清远":"101281301","云浮":"101281401","潮州":"101281501","东莞":"101281601","中山":"101281701","阳江":"101281801","揭阳":"101281901","茂名":"101282001","汕尾":"101282101","韶关":"101280201","南宁":"101300101","柳州":"101300301","来宾":"101300401","桂林":"101300501","梧州":"101300601","防城港":"101301401","贵港":"101300801","玉林":"101300901","百色":"101301001","钦州":"101301101","河池":"101301201","北海":"101301301","崇左":"101300201","贺州":"101300701","贵阳":"101260101","安顺":"101260301","都匀":"101260401","兴义":"101260906","铜仁":"101260601","毕节":"101260701","六盘水":"101260801","遵义":"101260201","凯里":"101260501","昆明":"101290101","红河":"101290301","文山":"101290601","玉溪":"101290701","楚雄":"101290801","普洱":"101290901","昭通":"101291001","临沧":"101291101","怒江":"101291201","香格里拉":"101291301","丽江":"101291401","德宏":"101291501","景洪":"101291601","大理":"101290201","曲靖":"101290401","保山":"101290501","呼和浩特":"101080101","乌海":"101080301","集宁":"101080401","通辽":"101080501","阿拉善左旗":"101081201","鄂尔多斯":"101080701","临河":"101080801","锡林浩特":"101080901","呼伦贝尔":"101081000","乌兰浩特":"101081101","包头":"101080201","赤峰":"101080601","南昌":"101240101","上饶":"101240301","抚州":"101240401","宜春":"101240501","鹰潭":"101241101","赣州":"101240701","景德镇":"101240801","萍乡":"101240901","新余":"101241001","九江":"101240201","吉安":"101240601","武汉":"101200101","黄冈":"101200501","荆州":"101200801","宜昌":"101200901","恩施":"101201001","十堰":"101201101","神农架":"101201201","随州":"101201301","荆门":"101201401","天门":"101201501","仙桃":"101201601","潜江":"101201701","襄樊":"101200201","鄂州":"101200301","孝感":"101200401","黄石":"101200601","咸宁":"101200701","成都":"101270101","自贡":"101270301","绵阳":"101270401","南充":"101270501","达州":"101270601","遂宁":"101270701","广安":"101270801","巴中":"101270901","泸州":"101271001","宜宾":"101271101","内江":"101271201","资阳":"101271301","乐山":"101271401","眉山":"101271501","凉山":"101271601","雅安":"101271701","甘孜":"101271801","阿坝":"101271901","德阳":"101272001","广元":"101272101","攀枝花":"101270201","银川":"101170101","中卫":"101170501","固原":"101170401","石嘴山":"101170201","吴忠":"101170301","西宁":"101150101","黄南":"101150301","海北":"101150801","果洛":"101150501","玉树":"101150601","海西":"101150701","海东":"101150201","海南":"101150401","济南":"101120101","潍坊":"101120601","临沂":"101120901","菏泽":"101121001","滨州":"101121101","东营":"101121201","威海":"101121301","枣庄":"101121401","日照":"101121501","莱芜":"101121601","聊城":"101121701","青岛":"101120201","淄博":"101120301","德州":"101120401","烟台":"101120501","济宁":"101120701","泰安":"101120801","西安":"101110101","延安":"101110300","榆林":"101110401","铜川":"101111001","商洛":"101110601","安康":"101110701","汉中":"101110801","宝鸡":"101110901","咸阳":"101110200","渭南":"101110501","太原":"101100101","临汾":"101100701","运城":"101100801","朔州":"101100901","忻州":"101101001","长治":"101100501","大同":"101100201","阳泉":"101100301","晋中":"101100401","晋城":"101100601","吕梁":"101101100","乌鲁木齐":"101130101","石河子":"101130301","昌吉":"101130401","吐鲁番":"101130501","库尔勒":"101130601","阿拉尔":"101130701","阿克苏":"101130801","喀什":"101130901","伊宁":"101131001","塔城":"101131101","哈密":"101131201","和田":"101131301","阿勒泰":"101131401","阿图什":"101131501","博乐":"101131601","克拉玛依":"101130201","拉萨":"101140101","山南":"101140301","阿里":"101140701","昌都":"101140501","那曲":"101140601","日喀则":"101140201","林芝":"101140401","台北县":"101340101","高雄":"101340201","台中":"101340401","海口":"101310101","三亚":"101310201","东方":"101310202","临高":"101310203","澄迈":"101310204","儋州":"101310205","昌江":"101310206","白沙":"101310207","琼中":"101310208","定安":"101310209","屯昌":"101310210","琼海":"101310211","文昌":"101310212","保亭":"101310214","万宁":"101310215","陵水":"101310216","西沙":"101310217","南沙岛":"101310220","乐东":"101310221","五指山":"101310222","琼山":"101310102","长沙":"101250101","株洲":"101250301","衡阳":"101250401","郴州":"101250501","常德":"101250601","益阳":"101250700","娄底":"101250801","邵阳":"101250901","岳阳":"101251001","张家界":"101251101","怀化":"101251201","黔阳":"101251301","永州":"101251401","吉首":"101251501","湘潭":"101250201","南京":"101190101","镇江":"101190301","苏州":"101190401","南通":"101190501","扬州":"101190601","宿迁":"101191301","徐州":"101190801","淮安":"101190901","连云港":"101191001","常州":"101191101","泰州":"101191201","无锡":"101190201","盐城":"101190701","哈尔滨":"101050101","牡丹江":"101050301","佳木斯":"101050401","绥化":"101050501","黑河":"101050601","双鸭山":"101051301","伊春":"101050801","大庆":"101050901","七台河":"101051002","鸡西":"101051101","鹤岗":"101051201","齐齐哈尔":"101050201","大兴安岭":"101050701","长春":"101060101","延吉":"101060301","四平":"101060401","白山":"101060901","白城":"101060601","辽源":"101060701","松原":"101060801","吉林":"101060201","通化":"101060501","沈阳":"101070101","鞍山":"101070301","抚顺":"101070401","本溪":"101070501","丹东":"101070601","葫芦岛":"101071401","营口":"101070801","阜新":"101070901","辽阳":"101071001","铁岭":"101071101","朝阳":"101071201","盘锦":"101071301","大连":"101070201","锦州":"101070701"}