设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP天气查询示例代码

发布时间:2022-07-07 13:20 所属栏目:121 来源:互联网
导读:?php city_name=_GET[city]; //用正则在city.txt中查找相应城市的天气城市代码 city_name=trim(ereg_replace([ ]{1,},,city_name)); time_file=city.txt; city_all=file_get_contents(time_file); preg=|city_name,(.*)/s|i; preg_match_all(preg,city_all,c
  <?php
  city_name=_GET['city'];
  //用正则在city.txt中查找相应城市的天气城市代码
  city_name=trim(ereg_replace("[ ]{1,}","",city_name));
  time_file="city.txt";
  city_all=file_get_contents(time_file);
  preg="|city_name,(.*)/s|i";
  preg_match_all(preg,city_all,cn, PREG_SET_ORDER);
  city_n=trim(cn[0][1]);
  
  if(city_n)
  {
  nowtime=date("Y-m-d");
  file = "cache/city_name.txt";
  //获取文件的最后修改日期
  if(file_exists(file))
  {
  last_time=date("Y-m-d",filemtime(file));
  }
  else{
  last_time=date("Y-m-d");
  }
  //新建保存匹配数组
  records=null;
  
  //如果文件存在,或还没过期,则直接读取缓存数据
  if (file_exists(file) && last_time==nowtime)
  {  
  records = unserialize(file_get_contents(file));
  }
  else
  {
  //以下就是如何在网站上 获取天气资料,,小偷部分!感觉其中的preg_match_all功能很强大
  data=file_get_contents("http://weather.msn.com/local.aspx?wealocations=wc:city_n");
  preg="|<td class=/"icon/"><img src=/"(.*)/" width=.*class=/"hilo/"><tr><th>Hi:<//th> <td>(.*)°<//td><//tr><tr><th>L<//th> <td>(.*)°<//td><//tr><//table>.*class=/"skytext/" colspan=/"3/">(.*)<//td>|U";
  preg_match_all(preg,data,records);
  unset (records[0][0]);
  //序列化组
  OUTPUT = serialize(records);  
  //打开文件,
  fp = fopen(file,"w");  
  //把数组写进文件
  fputs(fp, OUTPUT);  
  //关闭
  fclose(fp);  
  }
  image=records[1][0];
  resulta=records[2][0];
  resultb=records[3][0];
  resultc=records[4][0];
  reString="<table width=/"100%/">
  <tr bgcolor=/"#cccccc/">
  <td width=/"50%/"><font size=/"4/">city_name</font></td>
  <td width=/"50%/"><div align=/"right/"><font size=/"3/">nowtime</div></font></td>
  </tr>
  <tr>
  <td rowspan=/"2/"><img src='".image."' //></td>
  <td><font size=/"3/">".resulta."-".resultb."(F)</fong></td>
  </tr>
  <tr>
  <td colspan=/"2/"><font size=/"3/">".resultc."</fong></td>
  </tr>
  </table>";
  }
  else
  {
  reString="<table width=/"100%/">
  <tr bgcolor=/"#cccccc/">
  <td width=/"50%/"><font size=/"4/">The city: city_name hasn`t been found!</font></td>
  </tr>
  </table>";
  }
  echo iconv("gb2312","utf-8",reString);
  ?>
  主要是把当天的做个缓存,这样第2次访问同一城市的时候的话就比较快了。虽然不是什么好代码,但是对与刚刚学习PHP的人还是一个蛮好的例子,特别是里面的正则表达式的应用。
 
  前编主要是处理 部分,也就是天气查询的核心部分,现在是AJAX中的部分 代码如下:
 
  var xmlHttp;
  function createXMLHttpRequest()
  {
  var xmlHttpRequest;
  if(window.ActiveXObject)
  {
  xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
  return xmlHttpRequest;
  }
  else if(window.XMLHttpRequest)
  {
  xmlHttpRequest=new XMLHttpRequest();
  return xmlHttpRequest;
  }
  }
  function startXmlHttpRequest()
  {
  var form=document.getElementById("city");
  var city=form.value;
  var cityName=form.Text;
  xmlHttp=createXMLHttpRequest();
  xmlHttp.open("GET","weather/getHtml.php?city="+city+"&cityname="+cityName+"&time="+new Date(),true);
  xmlHttp.onreadystatechange=returnText;
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  xmlHttp.send(null);
  }
  function startTextXmlHttpRequest()
  {
  var form=document.getElementById("textcity");
  var city=form.value;
  xmlHttp=createXMLHttpRequest();
  xmlHttp.open("GET","weather/textGetHtml.php?city="+city,true);
  xmlHttp.onreadystatechange=returnText;
  xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  xmlHttp.send(null);
  }
  function validataIpAdd()
  {
  }
  function returnText()
  {
  var div=document.getElementById("result_box");
  var loading=document.getElementById("loading");
  div.innerHTML="";
  loading.style.display="block";
  if(xmlHttp.readyState==1)
  {
  }
  else if(xmlHttp.readyState==4)
  {
  if(xmlHttp.status==200)
  {
  div.innerHTML=xmlHttp.responseText;
  loading.style.display="none";
  }
  }
  }
  主要比较简单! 由4个函数组成 1个是创建 1个是提交 一个是返回 顶部的是是判断浏览器然后创建XMLHTMLREQUES。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读