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 相关文章推荐
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
PHP中require和include路径问题详解
Dec 25 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
php查询内存信息操作示例
May 09 PHP
phpquery中文手册
Mar 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
网站当前的在线人数
2006/10/09 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JavaScript File分段上传
2016/03/10 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
详解python之heapq模块及排序操作
2019/04/04 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
python的pip有什么用
2020/06/17 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
物流司机岗位职责
2013/12/28 职场文书
大学生学业生涯规划
2014/01/05 职场文书
委托书样本
2014/04/02 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
优秀英文求职信范文
2015/03/19 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang