首页 > 开发 > PHP > 正文

PHP天气查询实例代码

2024-05-04 21:52:50
字体:大 中 小
来源:转载
供稿:网友
  1. <?php 
  2. city_name=_GET['city']; 
  3. //用正则在city.txt中查找相应城市的天气城市代码 
  4. city_name=trim(ereg_replace("[ ]{1,}","",city_name)); 
  5. time_file="city.txt"; 
  6. city_all=file_get_contents(time_file); 
  7. preg="|city_name,(.*)/s|i"; 
  8. preg_match_all(preg,city_all,cn, PREG_SET_ORDER); 
  9. city_n=trim(cn[0][1]); 
  10.  
  11. if(city_n) 
  12. { 
  13. nowtime=date("Y-m-d"); 
  14. file = "cache/city_name.txt"; 
  15. //获取文件的最后修改日期 
  16. if(file_exists(file)) 
  17. { 
  18. last_time=date("Y-m-d",filemtime(file)); 
  19. } 
  20. else{ 
  21. last_time=date("Y-m-d"); 
  22. } 
  23. //新建保存匹配数组 
  24. records=null; 
  25.  
  26. //如果文件存在,或还没过期,则直接读取缓存数据 
  27. if (file_exists(file) && last_time==nowtime) 
  28. {  
  29. records = unserialize(file_get_contents(file)); 
  30. } 
  31. else 
  32. { 
  33. //以下就是如何在网站上 获取天气资料,,小偷部分!感觉其中的preg_match_all功能很强大 
  34. data=file_get_contents("http://weather.msn.com/local.aspx?wealocations=wc:city_n"); 
  35. preg="|<td class=/"icon/"><img src=/"(.*)/" width=.*class=/"hilo/"><tr><th>Hi:<//th> <td>(.*)&#176;<//td><//tr><tr><th>L<//th> <td>(.*)&#176;<//td><//tr><//table>.*class=/"skytext/" colspan=/"3/">(.*)<//td>|U"; 
  36. preg_match_all(preg,data,records); 
  37. unset (records[0][0]); 
  38. //序列化组 
  39. OUTPUT = serialize(records);  
  40. //打开文件, 
  41. fp = fopen(file,"w");  
  42. //把数组写进文件 
  43. fputs(fp, OUTPUT);  
  44. //关闭 
  45. fclose(fp);  
  46. } 
  47. image=records[1][0]; 
  48. resulta=records[2][0]; 
  49. resultb=records[3][0]; 
  50. resultc=records[4][0]; 
  51. reString="<table width=/"100%/"> 
  52. <tr bgcolor=/"#cccccc/"> 
  53. <td width=/"50%/"><font size=/"4/">city_name</font></td> 
  54. <td width=/"50%/"><div align=/"right/"><font size=/"3/">nowtime</div></font></td> 
  55. </tr> 
  56. <tr> 
  57. <td rowspan=/"2/"><img src='".image."' //></td> 
  58. <td><font size=/"3/">".resulta."-".resultb."(F)</fong></td> 
  59. </tr> 
  60. <tr> 
  61. <td colspan=/"2/"><font size=/"3/">".resultc."</fong></td> 
  62. </tr> 
  63. </table>"; 
  64. } 
  65. else 
  66. { 
  67. reString="<table width=/"100%/"> 
  68. <tr bgcolor=/"#cccccc/"> 
  69. <td width=/"50%/"><font size=/"4/">The city: city_name hasn`t been found!</font></td> 
  70. </tr> 
  71. </table>"; 
  72. } 
  73. echo iconv("gb2312","utf-8",reString); 
  74. ?> 

主要是把当天的做个缓存,这样第2次访问同一城市的时候的话就比较快了。虽然不是什么好代码,但是对与刚刚学习PHP的人还是一个蛮好的例子,特别是里面的正则表达式的应用。

前编主要是处理 部分,也就是天气查询的核心部分,现在是AJAX中的部分 代码如下:

  1. var xmlHttp; 
  2. function createXMLHttpRequest() 
  3. { 
  4. var xmlHttpRequest; 
  5. if(window.ActiveXObject) 
  6. { 
  7. xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP"); 
  8. return xmlHttpRequest; 
  9. } 
  10. else if(window.XMLHttpRequest) 
  11. { 
  12. xmlHttpRequest=new XMLHttpRequest(); 
  13. return xmlHttpRequest; 
  14. } 
  15. } 
  16. function startXmlHttpRequest() 
  17. { 
  18. var form=document.getElementById("city"); 
  19. var city=form.value; 
  20. var cityName=form.Text; 
  21. xmlHttp=createXMLHttpRequest(); 
  22. xmlHttp.open("GET","weather/getHtml.php?city="+city+"&cityname="+cityName+"&time="+new Date(),true); 
  23. xmlHttp.onreadystatechange=returnText; 
  24. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
  25. xmlHttp.send(null); 
  26. } 
  27. function startTextXmlHttpRequest() 
  28. { 
  29. var form=document.getElementById("textcity"); 
  30. var city=form.value; 
  31. xmlHttp=createXMLHttpRequest(); 
  32. xmlHttp.open("GET","weather/textGetHtml.php?city="+city,true); 
  33. xmlHttp.onreadystatechange=returnText; 
  34. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
  35. xmlHttp.send(null); 
  36. } 
  37. function validataIpAdd() 
  38. { 
  39. } 
  40. function returnText() 
  41. { 
  42. var div=document.getElementById("result_box"); 
  43. var loading=document.getElementById("loading"); 
  44. div.innerHTML=""; 
  45. loading.style.display="block"; 
  46. if(xmlHttp.readyState==1) 
  47. { 
  48. } 
  49. else if(xmlHttp.readyState==4) 
  50. { 
  51. if(xmlHttp.status==200) 
  52. { 
  53. div.innerHTML=xmlHttp.responseText; 
  54. loading.style.display="none"; 
  55. } 
  56. } 
  57. } 

主要比较简单! 由4个函数组成 1个是创建 1个是提交 一个是返回 顶部的是是判断浏览器然后创建XMLHTMLREQUES

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表