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 相关文章推荐
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
培养自己的php编码规范
Sep 28 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
基于PHP生成简单的验证码
Jun 01 PHP
PHP类的特性实例分析
Sep 28 PHP
详解PHP归并排序的实现
Oct 18 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
php二维码生成以及下载实现
Sep 28 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 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字符串中的单引号为双引号的方法
2017/02/16 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
常用js脚本
2006/12/03 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python读文件的步骤
2019/10/08 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Python 从attribute到property详解
2020/03/05 Python
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
社区戒毒工作方案
2014/06/04 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
JavaScript 定时器详情
2021/11/11 Javascript