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
Dec 14 PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php类的定义与继承用法实例
Jul 07 PHP
PHP可变函数学习小结
Nov 29 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
PHP全局使用Laravel辅助函数dd
Dec 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中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
如何在PHP中读写文件
2020/09/07 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python编写登陆接口的方法
2017/07/10 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
新三好学生主要事迹
2014/01/23 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python