微信公众平台开发(35)(天气预报、股票查询、手机归属查询、在线听音乐、翻译、成绩查询功能)代码分享

微信公众平台开发应用(天气预报、股票查询、手机归属查询、在线听音乐、翻译、成绩查询功能)

原文: http://www.cnblogs.com/imaker/p/5491433.html

1、xml(信息返回用扩展语言XML来传递值)

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

          //extract post data
        if (!empty($postStr)){

                  $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
              //加载图文模版
            $picTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <ArticleCount>1</ArticleCount>
                            <Articles>
                            <item>
                            <Title><![CDATA[%s]]></Title>
                            <Description><![CDATA[%s]]></Description>
                            <PicUrl><![CDATA[%s]]></PicUrl>
                            <Url><![CDATA[%s]]></Url>
                            </item>
                            </Articles>
                            <FuncFlag>1</FuncFlag>
                            </xml> ";
            $music ="<xml>
                             <ToUserName><![CDATA[toUser]]></ToUserName>
                             <FromUserName><![CDATA[fromUser]]></FromUserName>
                             <CreateTime>12345678</CreateTime>
                             <MsgType><![CDATA[music]]></MsgType>
                             <Music>
                             <Title><![CDATA[TITLE]]></Title>
                             <Description><![CDATA[DESCRIPTION]]></Description>
                             <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
                             <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
                             </Music>
                             <FuncFlag>0</FuncFlag>
                             </xml>";

2、当粉丝关注你的时候,在其微信会自动回复一条欢迎的图文信息

if(trim($postObj->MsgType) == "event" and trim($postObj->Event) == "subscribe")//判断是否是新关注
                {
                /*$msgType = "text";
                    $contentStr = "您好,欢迎您关注“生活助手”";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;*/
                    $msgType = "news";
                    $title = "生活助手,予你方便";
                    $data  = date(‘Y-m-d‘);
                    $desription = "您好,欢迎您关注“生活助手” \n\n 【1】天气查询;发送“地名+1空格+天气(北京 天气)”;\n【2】中英翻译;发送“内容+1空格+翻译(时间 翻译)”;
                    \n【3】股票查询;发送“股票名称+1空格+股票(上证指数 股票)”;\n【4】手机归属地查询;发送“手机号+1空格+归属(13800013800 归属)”;\n【5】微信笑话;发送“0+1空格+笑话(0 笑话)”;\n【6】身份证信息查询;发送“身份证号+1空格+身份(111122221552212 身份)”;
                    \n【7】在线音乐:发送“点歌+音乐名字(点歌光辉岁月)”;\n【8】新闻:发送“任何字体+1空格+新闻(新闻 新闻)”;\n【9】成绩查询:发送“任何字+1空格+成绩(xx 成绩)”;\n【10】返回菜单;发送“任何字(xx)”;";
                    $image = "http://t03.pic.sogou.com/3625bc2e740c3c50.jpg";
                    $turl = "http://lkwebperson.duapp.com/";
                    $resultStr = sprintf($picTpl, $fromUsername, $toUsername, $time, $msgType, $title,$desription,$image,$turl);
                    echo $resultStr;

                }

3、字符截取函数

 $str = mb_substr($keyword,-2,2,"UTF-8");//从倒数第二位开始截取,取后两位

                    $str_key = mb_substr($keyword,0,-2,"UTF-8");

4、翻译功能

if($str == ‘翻译‘ && !empty($str_key)){
                      $msgType = "text";
                    $contentStr = language($str_key);
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                    }

function language($value){
  $value = urlencode($value);
                $qurl = ‘http://fanyi.youdao.com/openapi.do?keyfrom=robot1&key=925703417&type=data&doctype=json&version=1.1&q=‘.$value;
                $f = new SaeFetchurl();
                $content = $f->fetch($qurl);
                $data =date(‘Y-m-d‘);
                $sina = json_decode($content,true);
                $errorcode = $sina[‘errorCode‘];
                $phonetic = $sina[‘basic‘][‘phonetic‘];
                $explains = $sina[‘basic‘][‘explains‘][‘0‘];
                $interpret = $sina[‘basic‘][‘explains‘][‘1‘];
                $interprets = $sina[‘basic‘][‘explains‘][‘2‘];
                $trans = ‘‘;
                if (isset($errorcode)){
                        switch ($errorcode){
                                case 0:
                                        $trans = $sina[‘translation‘][‘0‘];
                                break;
                                case 20:
                                        $trans = ‘要翻译的文本过长‘;
                                break;
                                case 30:
                                        $trans = ‘无法进行有效的翻译‘;
                                break;
                                case 40:
                                        $trans = ‘不支持的语言类型‘;
                                break;
                                case 50:
                                        $trans = ‘无效的key‘;
                                break;
                                default:
                                        $trans = ‘出现异常‘;
                                break;
                        }
                }
                return  " 翻译为:".$trans."\n 读音为:".$phonetic."\n 说明为:".$explain."\n 阐释为:".$interpret."\n 解释为:".$interprets."\n 当前时间为:".$data;
        }

5、天气预报

 if($str ==‘天气‘ && !empty($str_key)){
                    $msgType = "text";
                    $post_data = array();
                  $post_data[‘city‘] = $str_key;
                  $post_data[‘submit‘] = "submit";
                  $url=‘http://search.weather.com.cn/wap/search.php‘;
                  $o="";
                  foreach ($post_data as $k=>$v){
                    $o.= "$k=".urlencode($v)."&";
                  }
                  $post_data=substr($o,0,-1);
                  $ch = curl_init();
                  curl_setopt($ch, CURLOPT_POST, 1);
                  curl_setopt($ch, CURLOPT_HEADER, 0);
                  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                  curl_setopt($ch, CURLOPT_URL,$url);
                  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
                  $result = curl_exec($ch);
                  curl_close($ch);
                  $result=explode( ‘/‘,$result);
                  $result=explode(‘.‘,$result[‘5‘]);
                  $citynum = $result[‘0‘];
                  $weatherurl = "http://m.weather.com.cn/data/".$citynum.".html";
                  $weatherjson = file_get_contents($weatherurl);
                  $weatherarray = json_decode($weatherjson,true);
                  $weatherinfo = $weatherarray[‘weatherinfo‘];
                  $contentTpl = "#这里是%s#(%s)
            %s%s
            %s时发布的天气预报:

            今天天气:%s
            %s,%s

            穿衣指数:%s

            紫外线指数:%s
            洗车指数:%s

            明天天气:%s
            %s,%s

            后天天气:%s
            %s,%s";
      $contentStr = sprintf($contentTpl,$weatherinfo[‘city‘],$weatherinfo[‘city_en‘],$weatherinfo[‘date_y‘],$weatherinfo[‘week‘],$weatherinfo[‘fchh‘],$weatherinfo[‘temp1‘],$weatherinfo[‘weather1‘],$weatherinfo[‘wind1‘],$weatherinfo[‘index_d‘],$weatherinfo[‘index_uv‘],$weatherinfo[‘index_xc‘],$weatherinfo[‘temp2‘],$weatherinfo[‘weather2‘],$weatherinfo[‘wind2‘],$weatherinfo[‘temp3‘],$weatherinfo[‘weather3‘],$weatherinfo[‘wind3‘]);
      $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
      echo $resultStr;

                    }

6、在线音乐

 if(substr($keyword,0,6) == "点歌"){
                        $entityName = trim(substr($keyword,6,strlen($keyword)));
                        if ($entityName == ""){
                            $contentStr = "发送“点歌”加上歌名,如“点歌最炫民族风”";
                            $resultStr = transmitText($object, $contentStr, $funcFlag);
                            return $resultStr;
                        }
                        $apihost = "http://api2.sinaapp.com/";
                        $apimethod = "search/music/?";
                        $apiparams = array(‘appkey‘=>"0020120430", ‘appsecert‘=>"fa6095e113cd28fd", ‘reqtype‘=>"music");
                        $apikeyword = "&keyword=".urlencode($entityName);
                        $apicallurl = $apihost.$apimethod.http_build_query($apiparams).$apikeyword;
                        $api2str = file_get_contents($apicallurl);
                        $api2json = json_decode($api2str, true);
                        $musicUrl = $api2json[‘music‘][‘hqmusicurl‘];
                        if ($musicUrl == ""){
                            $contentStr = "没有找到音乐,可能不是歌名或者检索失败,请换首歌试试!";
                            $resultStr = transmitText($object, $contentStr, $funcFlag);
                        }else{
                            $musicArray = array("title"=>$api2json[‘music‘][‘title‘],
                                                "description"=>"技术支持:LK",
                                                "MusicUrl"=>$api2json[‘music‘][‘musicurl‘],
                                                "HQMusicUrl"=>$api2json[‘music‘][‘hqmusicurl‘]);
                            $resultStr = transmitMusic($object, $musicArray, $funcFlag,$fromUsername, $toUsername);
                        }
                        echo $resultStr;
                        exit();
                    }

function transmitMusic($object, $musicArray, $flag = 0,$FromUserName, $toUsername) {
            $itemTpl = "<Music>
            <Title><![CDATA[%s]]></Title>
            <Description><![CDATA[%s]]></Description>
            <MusicUrl><![CDATA[%s]]></MusicUrl>
            <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
            </Music>";
            $item_str = sprintf($itemTpl, $musicArray[‘title‘], $musicArray[‘description‘], $musicArray[‘MusicUrl‘], $musicArray[‘HQMusicUrl‘]);
            $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[music]]></MsgType>
            $item_str <FuncFlag>%d</FuncFlag>
            </xml>";
            $resultStr = sprintf($textTpl, $FromUserName,$toUsername, time(), $flag);
            echo $resultStr;
        } 

7、手机归属地

if ($str==‘归属‘ && !empty($str_key)){
                        $msgType="text";
                         $contentStr = taobao_m($str_key);
                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                        echo $resultStr;

                    }

function taobao_m($word){
        $tmapi = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=".$word;
        $fetch = new SaeFetchurl();
        $content = $fetch->fetch($tmapi);
        $content = iconv("gb18030","UTF-8",$content);
          $jso1 = "/province:\‘(.*)\‘\,/";
           $jso2 = "/catName:\‘(.*)\‘\,/";
         //$jso3 = "/city:\‘(.*)\‘\,/";
              preg_match_all($jso1,$content,$arr1);
              preg_match_all($jso2,$content,$arr2);
         //preg_match_all($jso3,$content,$arr4);
        if(count($arr1) > 1){
            return $arr1[1][0]."\n".$arr2[1][0];//."\n".$arr3[1][0]
        }else
                return "请重新输入电话号码!";
}

8、新闻

if($str==‘新闻‘ && !empty($str_key)){
                        $msgType="news";

                        $title="时事新闻,了解世界,了解中国";
                        $data  = date(‘Y-m-d‘);
                        $desription ="家事国事天下事事事关心,博古通今,坐家尽知天下事!";
                        $image ="http://download.hismarttv.com/epgdata/ApplicationPicture/9000001544780.jpg";
                        $turl ="http://news.sina.com.cn/";
                        $resultStr = sprintf($picTpl, $fromUsername, $toUsername, $time, $msgType, $title,$desription,$image,$turl);
                    echo $resultStr;

                    }

9、成绩查询

if($str==‘成绩‘ && !empty($str_key)){
                        $msgType="news";

                        $title="广东医学院->成绩查询入口";
                        $data  = date(‘Y-m-d‘);
                        $desription ="保佑保佑,逢考必过,一定过啦";
                        $image ="http://www.chinalawedu.com/upload/html/2012/11/22/yishua9534020121122110216798374.jpg";
                        $turl ="http://125.90.8.125:8000/portal/home.do?method=index";
                        $resultStr = sprintf($picTpl, $fromUsername, $toUsername, $time, $msgType, $title,$desription,$image,$turl);
                    echo $resultStr;

                    }

时间: 2024-10-27 16:36:06

微信公众平台开发(35)(天气预报、股票查询、手机归属查询、在线听音乐、翻译、成绩查询功能)代码分享的相关文章

微信公众平台开发教程--方培工作室,PHP语言版本

准备工作 微信公众平台的注册 介绍如何注册一个微信公众账号. 入门教程 微信公众平台开发入门教程 内容:1.申请SAE作为服务器; 2.启用开发模式; 3.微信公众平台PHP SDK; 4.接收发送消息类型解析; 5.微信公众平台开发模式原理; 6.快速开发天气预报功能. 入门教程是下面所有教程的基础. 基础接口 微信公众平台开发(2) 天气预报 介绍了使用中国天气网气象数据,实现微信上的天气预报功能. 微信公众平台开发(3) 中英翻译 介绍了使用有道翻译的接口,在微信公众平台上,开发中英互译的

微信公众平台开发文摘

微信公众平台消息接口开发(1)启用接口 微信公众平台自定义菜单接口开发(1) 微信公众平台消息接口开发(3)中英翻译 微信公众平台开发(4)天气预报 微信公众平台消息接口开发(5)股票查询 微信公众平台消息接口开发(6)电话号码链接与网址链接 微信公众平台消息接口开发(7)快递查询 微信公众平台消息接口开发(8)小黄鸡(小贱鸡)机器人 微信公众平台消息接口开发(9)骑行西藏自定义菜单 微信公众平台消息接口开发(10)语音触发(非识别) 微信公众平台消息接口开发(11)地理位置查询附近商家 微信公

微信公众平台开发接口PHP SDK完整版

原文:微信公众平台开发接口PHP SDK完整版 官方提供的SDK只有一个文本消息功能,我们将所有消息的消息类型及事件响应都整理了进来,并且加入日志记录,代码如下: 更新日志: 2013-01-01 版本1.02014-03-15 增加图片.视频.语音的内容回复2014-04-09 增加菜单链接事件2014-04-10 修改文本回复的判定方法2014-05-20 增加高级群发消息通知事件2014-05-26 增加多客服消息及多客服的判定方法2014-05-27 修改自动回复判定方式2014-06-

微信公众平台开发(107) 分享到朋友圈和发送给好友

关键字:微信公众平台 JSSDK 发送给朋友 分享到朋友圈 onMenuShareTimeline onMenuShareAppMessage 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-js-sharetimeline.html 在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现发送给朋友和分享到朋友圈时内容参数自定义的功能. 本文分为以下二个部分: 生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一

微信公众平台开发 天气预报

在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息. 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 一.中国天气网 中国天气网提供了丰富的气象数据接口.下面我们介绍主要的几个: 国家根节点接口: http://flash.weather.com.cn/wmaps/xml/china.xml 该接口以XML格式列出所有的省(自治区.直辖市)的中文名称(quName)和拼音名称(pyName)及省会城市的天气

【微信公众平台开发】封装获取天气预报功能

微信公众平台小功能多点,可以增加用户的粘性,不会感觉你微信没内容,就把你给取消关注了.所以得折腾各种有的没的东西. 个人封装天气预报功能代码如下(说明下:网上有很多此类代码,但是要自己理解,就得实际折腾) <?php header('Content-Type:text/html;charset=utf-8'); class WeChatMsgType { private $toUserName; private $fromUserName; private $xmlModle; private

微信公众平台开发最佳实践(第2版)

<微信公众平台开发最佳实践 第2版>微信公众平台开发经典之作全新改版,精心挑选最经典的商业项目开发,成千上万人次微信公众平台开发者从中受益 前言 出版说明 自从方倍工作室在博客园推出微信公众平台开发系列教程后,受到广大微信开发人员及爱好者的热情关注,相关文章的日访问量高达2万人次,而<微信公众平台开发入门教程>的阅读量超过50万,博客访问量总计超过500万,成为微信公众平台开发更新最快,传播最广.受众最多.资料最全的博客,很多博文被许多有影响力的网站转载,并被各大搜索引擎收录且排名

微信公众平台开发(89) 高级群发接口

在这篇微信公众平台高级接口开发教程中,我们将介绍如何开发高级群发接口功能. 本文分为以下四个部分: 准备群发内容 选择群发对象 执行群发 接收群发结果 一.准备群发内容 群发内容可以是文本.图片.语音.视频.图文.群发文本只需要文本内容,其他内容需要获得相应的media_id. 1. 文本内容 文本内容就是一段文字,比如:"微信公众平台开发最佳实践" 2. 图片.语音.视频 要求如下: ? 图片(image): 128K,支持JPG格式 ? 语音(voice):256K,播放长度不超过

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M