找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1802|回复: 0

[教程] PHP飞信通知天气预报_API版

[复制链接]
发表于 2013-4-9 13:04:31 | 显示全部楼层 |阅读模式 来自 中国–广东–湛江
  1. PHP飞信通知天气预报_API版
  2.              如果条件允许可以在服务器上用计划任务 每天在固定时间给自己或亲人发送天气预报
  3.              采用飞信官方web接口
  4.              有时可能由于服务器速度问题可能造成发送不成功.属于正常现象.
  5.             
  6.              
  7.              /***************************************************************************/
  8.              /******************* PHP飞信通知天气预报_API版 *******************************/
  9.              /*************************** 2011-12-5 ************************************/
  10.              /**************************作者:xiaogg*************************************/
  11.              /***************************版本:2.11**************************************/
  12.              /*********************http://www.bitefu.net********************************/
  13.              header('content-Type: text/html; charset=utf-8');
  14.              function curl_file_get_contents($durl){
  15.              if(function_exists('curl_setopt')){
  16.              $ch = curl_init();
  17.              curl_setopt($ch, CURLOPT_URL, $durl);
  18.              curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  19.              curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
  20.              curl_setopt($ch, CURLOPT_REFERER,_REFERER_);
  21.              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  22.              $r = curl_exec($ch);
  23.              curl_close($ch);
  24.              }else if(function_exists('file_get_contents')){
  25.              $r=file_get_contents($durl);
  26.              }else if(function_exists('file')){
  27.              $r=file($durl);$r = implode('', $r);
  28.              }else{
  29.              $r='获取内容失败';
  30.              }
  31.              return $r;
  32.              }
  33.              //删除空格
  34.              function wtrimall($str,$type=0)
  35.              {
  36.              $str= str_replace(' ','*-*',$str);
  37.              $str= str_replace(' ','*-*',$str);
  38.              $str= str_replace('        ','*-*',$str);
  39.              $str_s= str_replace(' ','*-*',$str);
  40.              $str= str_replace('*-*','',$str_s);
  41.              if($type==1)return $str_s;else return $str;
  42.              }
  43.              //对数组进行键值排序
  44.              function wchangearray($str)
  45.              {
  46.              return array_values(array_filter($str));
  47.              }
  48.              function wtext($city,$weather_txt='weahter.txt')
  49.              {
  50.              $date=date('Y-m-d');$arr=array();$arr['date']=$date;
  51.              if(!file_exists($weather_txt)){file_put_contents($weather_txt,serialize($arr));}
  52.              $old=unserialize(file_get_contents($weather_txt));
  53.              if($old['date']!=$date){file_put_contents($weather_txt,serialize($arr));}
  54.              if($old[$city] && strlen($old[$city])>30){return $old[$city];}else{
  55.              switch($city)
  56.              {
  57.              case 'sjz': $url = 'http://www.weather.com.cn/weather/101090101.shtml';$text='石家庄';break;
  58.              case 'yt': $url = 'http://www.weather.com.cn/weather/101090508.shtml';$text='玉田';break;
  59.              }
  60.              $lines_string = curl_file_get_contents($url);
  61.              $lines_string = explode('','',$lines_string[1]),str_replace('2-->','',$lines_string[2]),str_replace('3-->','',$lines_string_3[0]));
  62.              for($i=0;$i< count($lines_array); $i ++)
  63.              {
  64.              $nowarray=strip_tags($lines_array[$i]);
  65.              $datearray=explode('日',$nowarray);$nowdata=wtrimall($datearray[0]);//获取日期
  66.              $weather=explode('白天',$nowarray);$weather=explode('夜间',$weather[1]);
  67.              $weather_bai=wtrimall(str_replace('高温 ','',$weather[0]));$weather_bai=str_replace('℃','度',$weather_bai);//白天天气
  68.              $weather_ye=wtrimall(str_replace('低温 ','',$weather[1]));$weather_ye=str_replace('℃','度',$weather_ye);//夜间天气
  69.              $baiarr=wchangearray(explode(' ',$weather_bai));$yearr=wchangearray(explode(' ',$weather_ye));
  70.              $wtext[$i]=trim($nowdata).'日';
  71.              if($baiarr[0]==$yearr[0]){$wtext[$i].=$baiarr[0];}else{$wtext[$i].=$baiarr[0].'转'.$yearr[0];}//将天气添加到返回值里
  72.              $wtext[$i].=$baiarr[1].'到'.$yearr[1];//将气温添加到返回值里
  73.              if($baiarr[2]==$yearr[2]){$wtext[$i].=$baiarr[2];}else{$wtext[$i].=str_replace('风','',$baiarr[2].'转'.$yearr[2]);$wtext[$i].='风';}//将风向添加到返回值里
  74.              if($baiarr[3]!='微风'){$wtext[$i].=$baiarr[3];}//将风力添加到返回值里
  75.              }
  76.              $new=$text.implode('',$wtext);
  77.              if(strlen($new)<30){$new=wtext($city);};
  78.              $newarr=array($city=>$new);
  79.              file_put_contents($weather_txt,serialize(array_unique(array_merge($old,$newarr))));
  80.              return $new;
  81.              }
  82.              }
  83.              //配置开始
  84.              $phone_num = '150******';//在这修改为您的手机号码;
  85.              $password = '******' ;//在这修改为您的飞信密码
  86.              $phone='150******|yt;134******|yt;151******|sjz;150******|sjz';//在这修改为要发送的电话号码,多个发送用,分开。注:必须是您的飞信好友
  87.              //配置结束
  88.              $tophone=explode(';',$phone);
  89.              //发送短信

  90.           for($i=0;$i
复制代码

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-22 13:49 , Processed in 0.039496 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表