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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
How do I change MySQL timezone?
Mar 26 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
实现获取http内容的php函数分享
Feb 16 PHP
用php守护另一个php进程的例子
Feb 13 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
PHP概率计算函数汇总
Sep 13 PHP
php生成图片验证码的方法
Apr 15 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 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的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
javascript常用函数(1)
2015/11/04 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python中断多重循环的思路总结
2019/10/04 Python
如何基于python生成list的所有的子集
2019/11/11 Python
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
计算机本科生自荐信
2013/10/15 职场文书
担保书怎么写
2014/04/01 职场文书
家长对学生的评语
2014/04/18 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
花坛标语大全
2014/06/30 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python