PHP飞信通知天气预报_API版

网络整理 - 07-26
   

  PHP飞信通知天气预报_API版

  如果条件允许可以在服务器上用计划任务 每天在固定时间给自己或亲人发送天气预报

  采用飞信官方web接口

  有时可能由于服务器速度问题可能造成发送不成功.属于正常现象.

  

  /***************************************************************************/

  /******************* PHP飞信通知天气预报_API版 *******************************/

  /*************************** 2011-12-5 ************************************/

  /**************************作者:xiaogg*************************************/

  /***************************版本:2.11**************************************/

  /*****************************************************/

  header("content-Type: text/html; charset=utf-8");

  function curl_file_get_contents($durl){

  if(function_exists('curl_setopt')){

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $durl);

  curl_setopt($ch, CURLOPT_TIMEOUT, 5);

  curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);

  curl_setopt($ch, CURLOPT_REFERER,_REFERER_);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $r = curl_exec($ch);

  curl_close($ch);

  }else if(function_exists('file_get_contents')){

  $r=file_get_contents($durl);

  }else if(function_exists('file')){

  $r=file($durl);$r = implode('', $r);

  }else{

  $r="获取内容失败";

  }

  return $r;

  }

  //删除空格

  function wtrimall($str,$type=0)

  {

  $str= str_replace(" ","*-*",$str);

  $str= str_replace(" ","*-*",$str);

  $str= str_replace("\t","*-*",$str);

  $str_s= str_replace("\n","*-*",$str);

  $str= str_replace("*-*","",$str_s);

  if($type==1)return $str_s;else return $str;

  }

  //对数组进行键值排序

  function wchangearray($str)

  {

  return array_values(array_filter($str));

  }

  function wtext($city,$weather_txt="weahter.txt")

  {

  $date=date("Y-m-d");$arr=array();$arr['date']=$date;

  if(!file_exists($weather_txt)){file_put_contents($weather_txt,serialize($arr));}

  $old=unserialize(file_get_contents($weather_txt));

  if($old['date']!=$date){file_put_contents($weather_txt,serialize($arr));}

  if($old[$city] && strlen($old[$city])>30){return $old[$city];}else{

  switch($city)

  {

  case "sjz": $url = '';$text="石家庄";break;

  case "yt": $url = '';$text="玉田";break;

  }

  $lines_string = curl_file_get_contents($url);

  $lines_string = explode("','',$lines_string[1]),str_replace('2-->','',$lines_string[2]),str_replace('3-->','',$lines_string_3[0]));

  for($i=0;$i< count($lines_array); $i ++)

  {

  $nowarray=strip_tags($lines_array[$i]);

  $datearray=explode("日",$nowarray);$nowdata=wtrimall($datearray[0]);//获取日期

  $weather=explode("白天",$nowarray);$weather=explode("夜间",$weather[1]);

  $weather_bai=wtrimall(str_replace("高温 ","",$weather[0]));$weather_bai=str_replace("℃","度",$weather_bai);//白天天气

  $weather_ye=wtrimall(str_replace("低温 ","",$weather[1]));$weather_ye=str_replace("℃","度",$weather_ye);//夜间天气

  $baiarr=wchangearray(explode("\r",$weather_bai));$yearr=wchangearray(explode("\r",$weather_ye));

  $wtext[$i]=trim($nowdata)."日";

  if($baiarr[0]==$yearr[0]){$wtext[$i].=$baiarr[0];}else{$wtext[$i].=$baiarr[0]."转".$yearr[0];}//将天气添加到返回值里

  $wtext[$i].=$baiarr[1]."到".$yearr[1];//将气温添加到返回值里

  if($baiarr[2]==$yearr[2]){$wtext[$i].=$baiarr[2];}else{$wtext[$i].=str_replace("风","",$baiarr[2]."转".$yearr[2]);$wtext[$i].="风";}//将风向添加到返回值里

  if($baiarr[3]!="微风"){$wtext[$i].=$baiarr[3];}//将风力添加到返回值里

  }

  $new=$text.implode("",$wtext);

  if(strlen($new)<30){$new=wtext($city);};

  $newarr=array($city=>$new);

  file_put_contents($weather_txt,serialize(array_unique(array_merge($old,$newarr))));