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 相关文章推荐
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
将数组写入txt文件 var_export
Apr 21 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
PHP常用正则表达式集锦
Aug 17 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 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求最大子序列和的算法实现
2011/06/24 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
Pytorch之contiguous的用法
2019/12/31 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
招标授权委托书样本
2014/09/23 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle