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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
php UBB 解析实现代码
Nov 27 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
PHP之uniqid()函数用法
Nov 03 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
基于php解决json_encode中文UNICODE转码问题
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源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
Symfony控制层深入详解
2016/03/17 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
python实现五子棋小游戏
2020/03/25 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
经销商订货会主持词
2014/03/27 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
交通志愿者活动总结
2014/06/27 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
单位工作证明书格式
2014/10/04 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
物业保安辞职信
2015/05/12 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android