PHP微信开发之有道翻译


Posted in PHP onJune 23, 2016

首先,你需要去有道翻译API官网去申请key:http://fanyi.youdao.com/openapi?path=data-mode
得到key之后,就可以开始从该API获得查询的数据了(返回json还是XML,看个人喜好,这里我用的是json) 
下面我直接把responseMsg方法里,实现翻译的代码给出。如果你第一次接触微信API,不懂这个方法是干什么的,请去点击PHP微信开发之文本自动回复

</pre><a target=_blank href="http://blog.csdn.net/misakaqunianxiatian/article/details/49401759" target="_blank"></a></p><p><pre name="code" class="php"> public function responseMsg(){
  
 //get post data, May be due to the different environments
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据

  //extract post data
 if(!empty($postStr)){
    
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"(订阅号)的公众号id
   $keyword = trim($postObj->Content); //用户发给订阅号的消息内容
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型:文本
   $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";

   if($postObj->MsgType == 'event'){ //如果XML信息里消息类型为event
    if($postObj->Event == 'subscribe'){ //如果是订阅事件
     $contentStr = "欢迎订阅misaka去年夏天!\n更多精彩内容:http://blog.csdn.net/misakaqunianxiatian";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
     echo $resultStr;
     exit();
    }
   }

   $which = mb_substr($keyword, 0, 2, 'UTF-8');//获取要返回什么样的信息

   if($which== "翻译"){ //如果要进行翻译
    $fanyi = $which;
    $search = str_replace($fanyi, '', $keyword); //要翻译的关键字

    $key = ""; //在有道API申请的key
    $keyfrom = ""; //与key对应
    $url = 'http://fanyi.youdao.com/openapi.do?keyfrom=' . $keyfrom . '&key=' . $key . '&type=data&doctype=json&version=1.1&q=' . urlencode($search);//调用有道翻译API
    
    $json = file_get_contents($url);//也可以用curl来获取
    $res = json_decode($json, true);

    /**
     * 以下从返回的数据中提取翻译结果
     */
    $contentStr = '【查询】' . $res['query'] . "\n";
    $contentStr .= "【翻译】\n" . $res['translation'][0] . "\n";

    $str = '';
    foreach($res['basic']['explains'] as $v){
     $str .= $v . "\n";
    }
    $contentStr .= "【基本释义】\n" . $str;


    if(isset($res['web'])){

     foreach($res['web'] as $kk=>$vv){
      sort($vv);
      $res['web'][$kk] = $vv; //调节字段顺序
     }

     $str = '';
     foreach($res['web'] as $v){
      foreach($v as $k2=>$v2){
       if($k2 == 0){
        $str .= "【". $v2 ."】\n";
       }else{
        foreach($v2 as $v3){
         $str .= $v3 ."\n";
        }
       }
      }
     }
     $contentStr .= "【网络释义】\n" . $str;     
    }

    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit(); 

   }

注:关注的订阅号返回的信息里要换行,要使用“\n”。在你的网站空间里,将你的代码修改一下,就可以给订阅号发送比如“翻译汉堡包”,订阅号会调用有道的API来返回翻译结果,可以中英文互译,也可以是句子。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
一段php加密解密的代码
Oct 09 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
smarty获得当前url的方法分享
Feb 14 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 PHP
PHP微信开发之文本自动回复
Jun 23 #PHP
php微信高级接口群发 多客服
Jun 23 #PHP
php英文单词统计器
Jun 23 #PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 #PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 #PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 #PHP
PHP生成静态HTML文档实现代码
Jun 23 #PHP
You might like
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
js模糊查询实例分享
2016/12/26 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
python getopt详解及简单实例
2016/12/30 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
mac系统安装Python3初体验
2018/01/02 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python爬虫要用到的库总结
2020/07/28 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
家长给孩子的表扬信
2014/01/17 职场文书
学生会干部自荐信
2014/02/04 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
英语老师推荐信
2014/02/26 职场文书
总结表彰大会主持词
2014/03/26 职场文书
小学班主任寄语大全
2014/04/04 职场文书
小学生作文评语
2014/04/18 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技