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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
浅谈laravel中的关联查询with的问题
Oct 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 5.0 Pear安装方法
2006/12/06 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
js静态作用域的功能。
2006/12/25 Javascript
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python File(文件) 方法整理
2019/02/18 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python超时重新请求解决方案
2019/10/21 Python
python3 logging日志封装实例
2020/04/08 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
党课学习思想汇报
2014/01/02 职场文书
英语道歉信范文
2014/01/09 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
网吧消防安全责任书
2014/07/29 职场文书
Golang入门之计时器
2022/05/04 Golang