찾다
php教程php手册教你用wechat类玩转微信公众号

通过wechat类教你实现大部分常见功能,包括查天气,公交路线,机器人的自动回复等。。。记得点个赞哦!
没有公众号可以用的可以用自己的微信号申请一个测试号,功能还是挺全的<?php <br /> <br> namespace Home\Controller;<br> <br> use Think\Controller;<br> <br> <br> class IndexController extends Controller {<br> <br>     public function index() {<br>         $options = array(<br>             'token' => 'ruanqin', // 填写你设定的token<br>             'appid' => '1111111', // 填写高级调用功能的appid<br>             'appsecret' => '11111111' // 填写高级调用功能的密钥<br>         );<br> //这两个类我已放到附件,有需要可以下载<br>         Vendor('weixin.Wechat');<br>         Vendor('weixin.Snoopy');<br>         $weObj = new \Wechat($options);<br> <br>         $weObj->valid(); // 验证key<br>            //获取菜单操作:<br>        $menu = $weObj->getMenu();<br>           //设置菜单<br>        $newmenu =  array(<br>            <br>             'button' => array (<br>                   0 => array (<br>                         'name' => '扫码',<br>                         'sub_button' => array (<br>                             0 => array (<br>                               'type' => 'scancode_waitmsg',<br>                               'name' => '扫码带提示',<br>                               'key' => 'rselfmenu_0_0',<br>                         ),<br>                             1 => array (<br>                               'type' => 'scancode_push',<br>                               'name' => '扫码推事件',<br>                               'key' => 'rselfmenu_0_1',<br>                         ),<br>                     ),<br>                       ),<br>                   1 => array (<br>                     'name' => '发图',<br>                         'sub_button' => array (<br>                             0 => array (<br>                               'type' => 'pic_sysphoto',<br>                               'name' => '系统拍照发图',<br>                               'key' => 'rselfmenu_1_0',<br>                             ),<br>                             1 => array (<br>                               'type' => 'pic_photo_or_album',<br>                               'name' => '拍照或者相册发图',<br>                               'key' => 'rselfmenu_1_1',<br>                             ),<br>                              2 => array (<br>                             'type' => 'view',<br>                             'name' => 'baidu',<br>                             'url' => 'http://www.baidu.com',<br>                             'key' => 'rselfmenu_1_2',<br>                             ),<br>                     ),<br>                       ),<br>                       2 => array (<br>                         'type' => 'location_select',<br>                         'name' => '发送位置',<br>                         'key' => 'rselfmenu_2_0'<br>                       ),<br>                  <br>                     ),<br>          <br>           );<br>    $result = $weObj->createMenu($newmenu);<br> <br> //获得用户发送过来的消息的类型,有"text","music","image"等<br> $type = $weObj->getRev()->getRevType();<br> switch($type) {<br>     case \Wechat::MSGTYPE_TEXT:<br>             //获得用户发送过来的文字消息内容<br>             $content=$weObj->getRev()->getRevContent();<br>             //从消息的结尾数第二个字开始截取,截取两个字<br>             $str = mb_substr($content,-2,2,"UTF-8");<br>             //从消息的开头开始,截掉末尾的两个字,便得关键字。<br>             $str_key = mb_substr($content,0,-2,"UTF-8");<br>             //然后加以判断是否为关键字,是否为空,符合要求则调用函数查询翻译数据<br>             if($str == '翻译' && !empty($str_key)) {<br>                 $url1="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=9peNkh97N6B9GGj9zBke9tGQ&q={$str_key}&from=auto&to=auto";//百度翻译地址<br>                 //实例化采集类<br>                 $spy=new \Snoopy;<br>                 //获取采集来的数据<br>                 $spy->fetch($url1);<br>                 //将结果赋给$con_json<br>                 $con_json=$spy->results;<br>                 //json解析,转换为object对象类型<br>                 $transon=json_decode($con_json);<br>                 //读取翻译内容<br>                 $con_str = $transon->trans_result[0]->dst;<br>                 //以文字的形式输出结果<br>                 $weObj->text("{$con_str}")->reply();<br>             }<br>             //判断是否为关键字,是否为空,符合要求则调用函数查询书本数据<br>             if($str=='书本' && !empty($str_key)) {                              <br>                 $url="http://222.206.65.12/opac/search_rss.php?dept=ALL&title={$str_key}&doctype=ALL&lang_code=ALL&match_flag=forward&displaypg=20&showmode=list&orderby=DESC&sort=CATA_DATE&onlylendable=no";<br>                 $spp=new \Snoopy;<br>                 $spp->fetch($url);<br>                 $fa=$spp->results;<br>                 //将采集获取的XML数据转换成object对象类型<br>                 $f=simplexml_load_string($fa);<br>                 $da1=$f->channel->item[0]->title;<br>                 $da2=$f->channel->item[1]->title;<br>                $da3=$f->channel->item[2]->title;      <br>                $weObj->text("{$da1}\n{$da2}\n{$da3}")->reply();<br>             }<br>                //判断公交路线<br>                  if($str=='公交' && !empty($str_key)){<br>                     <br>                   $strbus=explode(',',$str_key);<br>                  $ch = curl_init();<br>                 $url = "http://apis.baidu.com/apistore/bustransport/buslines?city={$strbus[0]}&busNo={$strbus[1]}";<br>                 $header = array(<br>                     'apikey: 这里的apikey自己去百度APIstore去注册,免费的!' <br>           );<br>                 // 添加apikey到header<br>                 curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                 // 执行HTTP请求<br>                 curl_setopt($ch , CURLOPT_URL , $url);<br>                 $res = curl_exec($ch);<br>             <br>                $b=json_decode($res);<br>                $a=$b->retData->result;<br>                $c=simplexml_load_string($a);<br>                $d=$c->lines->line[1]->stats;<br>                $rq=explode(';',$d);<br>                $ww=implode('->',$rq);<br>                $weObj->text("{$ww}")->reply();<br>                 <br>                 }<br>              //景点查询<br>      <br>                  if($str=='景点' && !empty($str_key)){<br>                     <br>                  <br>                 $ch = curl_init();<br>                      $url = "http://apis.baidu.com/apistore/attractions/spot?id={$str_key}&output=json";<br>                 $header = array(<br>                     'apikey: <b>同上</b>',<br>                 );<br>                 // 添加apikey到header<br>                 curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                 // 执行HTTP请求<br>                 curl_setopt($ch , CURLOPT_URL , $url);<br>                 $res = curl_exec($ch);<br>             <br>                $a=json_decode($res);<br>                $name=$a->result->name;<br>                $phone=$a->result->telephone; <br>                $abstract=$a->result->abstract; <br>                $description=$a->result->description; <br>                $price=$a->result->ticket_info->price;<br>                $open_time=$a->result->ticket_info->open_time; <br>                      $b="景点名:{$name}\n景点联系电话:{$phone}\n价格:{$price}\n开放时间:{$open_time}\n景点详情:{$abstract}{$description}";<br>                 $weObj->text("{$b}")->reply();     <br>                 <br>                 }<br>   //这里做了一个健康的资讯信息查询,程序员嘛健康还是挺重要的<br>                 if($str=='健康' && !empty($str_key)){<br>                     $url = 'http://apis.baidu.com/yi18/lore/loreclass?id=1';<br>                     $header = array(<br>                         'apikey: 。。。自己申请。。。。。',<br>                     ); <br>                     $thisres=$this->curl($url,$header);<br>                    $a=$this->curl($url,$header);<br>                    $thisres=$a->yi18;  <br>                     for ($i=0; $i                          $q=$thisres[$i]->id;<br>                         $w=$thisres[$i]->name;<br>                         $qq.='';<br>                         $qq.="序号:{$q}--标题:{$w}\n";<br>                     }<br>                      $weObj->text("{$qq}\n请选择您想了解的信息的序号,如:1标题")->reply();<br>                 <br>                 <br>                 }<br>                    if($str=='标题' && !empty($str_key)){<br>                       $ch = curl_init();<br>                        $url = "http://apis.baidu.com/yi18/lore/list?page=1&limit=10&type=id&id={$str_key}";<br>                         $header = array(<br>                             'apikey: 同上',<br>                         ); <br>                         curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                         // 执行HTTP请求<br>                         curl_setopt($ch , CURLOPT_URL , $url);<br>                         $res = curl_exec($ch);<br>                         $b=json_decode($res);<br>                        <br>                          $thisres2=$b->yi18; <br>                          foreach ($thisres2 as $key => $value) {<br>                                         $q=$thisres2[$key]->id;<br>                                         $w=$thisres2[$key]->title;<br>                                         $qq.='';<br>                                         $qq.="id:{$q}--信息:{$w}\n";<br>                           } <br>                                     <br>                      $weObj->text("{$qq}\n请选择您想了解的信息的id,如:18069信息")->reply();<br>                     <br>                     }<br>                     if($str=='信息' && !empty($str_key)){<br>                     <br>                     $url = "http://apis.baidu.com/yi18/lore/detail?id={$str_key}";<br>                     $header = array(<br>                         'apikey: ',<br>                     ); <br>                     $a=$this->curl($url,$header);<br>                      $thisres=$a->yi18; <br>          <br>                         $q=$thisres->message;<br>                         $w=$thisres->title;<br>                         //$qq='标题.$w.正文.$q';<br>                       <br>                         <br>                         $qq="标题:{$w}\n正文:{$q}";<br>                         $str=str_replace("<strong>","",$qq);<br>                         $ww=strip_tags($str);<br>                         $weObj->text("{$ww}")->reply();<br>                     <br>                     <br>                     }<br>                                             <br> <br>     <br>             //天气查询<br>             if($str == '天气' && !empty($str_key)) {<br>                 $url="http://api.map.baidu.com/telematics/v2/weather?location={$str_key}&ak=同上";<br>                 $sp=new \Snoopy;<br>                 $sp->fetch($url);<br>                 $l_xml=$sp->results;<br>                 $f=simplexml_load_string($l_xml);<br>                 $city=$f->currentCity;<br>                 $da1=$f->results->result[0]->date;<br>                 $da2=$f->results->result[1]->date;<br>                $da3=$f->results->result[2]->date;     <br>                 $w1=$f->results->result[0]->weather;<br>                 $w2=$f->results->result[1]->weather;<br>                $w3=$f->results->result[2]->weather;       <br>                 $p1=$f->results->result[0]->wind;<br>                 $p2=$f->results->result[1]->wind;<br>                $p3=$f->results->result[2]->wind;<br>                 $q1=$f->results->result[0]->temperature;<br>                 $q2=$f->results->result[1]->temperature;<br>                $q3=$f->results->result[2]->temperature;<br>                $k1=$f->results->result[0]->dayPictureUrl; <br>                $k2=$f->results->result[1]->dayPictureUrl;<br>                $k3=$f->results->result[2]->dayPictureUrl;    <br>                 $d1=$city.$da1.$w1.$p1.$q1;<br>                 $d2=$city.$da2.$w2.$p2.$q2;<br>                 $d3=$city.$da3.$w3.$p3.$q3;<br>                 $weObj->text("{$d1}\n{$d2}\n{$d3}")->reply();<br>             }<br> <br>             //剩下的任务就交给机器人自己去完成吧!;<br>            //这里我使用的是图灵机器人,通过我女朋友和机器人聊天实验表明还是付费的机器人比较聪明,免费的有点傻傻的,所以土豪们可以选择付费的,按条数付费的<br>             <br>             else {<br>              <br>                  $strurl="http://www.tuling123.com/openapi/api?key=自己申请个key吧&info={$content}";<br>                 $xhy=new \Snoopy;<br>                 $xhy->fetch($strurl);<br>                 $x_json=$xhy->results;<br>                 $strjson=json_decode($x_json);<br>                 //$a=var_dump($strjson);<br>                 $contentStr = $strjson->text;<br>                 //$weObj->text("{$contentStr}")->reply();<br>                 $weObj->text("{$contentStr}")->reply();<br>             }<br>             break;<br> <br>     case \Wechat::MSGTYPE_LOCATION:<br>                 //接收消息的地理位置<br>                 $arr1=$weObj->getRev()->getRevGeo();<br>                 $snoopy=new \Snoopy;<br>                 $url="http://api.map.baidu.com/telematics/v2/distance?waypoints=填你的位置的经纬度;{$arr1['x']},{$arr1['y']}&ak=同上";<br>                 $snoopy->fetch($url);<br>                 $lines_string=$snoopy->results; <br>                 $fk=simplexml_load_string($lines_string);<br>                 $juli=$fk->results->distance;<br>                 $contentstring="你和我的距离有{$juli}米远";<br>                 $weObj->text("{$contentstring}")->reply();<br>             break;<br>     //接受图片回复文字,也可以回复图片,你们自由发挥吧<br>     case \Wechat::MSGTYPE_IMAGE:<br>                 $b=" ";<br>                 $a=rand(1,3);<br>                  switch ($a)<br>                  {case 1;<br>                  $b="你傻逼啊,发这么二的图片";<br>                  break;<br>                  case 2;<br>                  $b="跟你一样丑";<br>                  break;<br>                  default;<br>                  $b="啊,我的天哪";    <br>                  }                                                                       <br>                 $weObj->text("哈哈我知道这是图片\n:{$b}")->reply();<br>                 //exit; <br>             break;<br>     //实现首次关注回复功能<br>     case \Wechat::MSGTYPE_EVENT:<br>             $msgEvent=$weObj->getRev()->getRevEvent();<br>            <br>             $weObj->text("感谢您关注阮琴专用测试版公众号\n查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n查公交路线,如杭州,151公交\n健康知识:任意字+健康,如,查健康\n景点查询:景点名(请使用拼音)+景点如xihu景点\n还可选择发送图片,搞笑也会来和大家聊天哦!\n更多内容,敬请期待...")<br>                    ->reply();<br>             break;<br>     <br>     default:<br>             $weObj->text("查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n还可选择发送图片,谢谢你的关注,更多内容,敬请期待...")->reply();<br>  <br> }<br>     }<br>    <br> }     </strong>

附件 weixin.zip ( 20.27 KB 下载:203 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음