PHP微信开发之有道翻译

首先,你需要去有道翻译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来返回翻译结果,可以中英文互译,也可以是句子。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • PHP微信开发之查询微信精选文章

    查询微信里的一些精选的,点击量比较大的文章.  别忘记申请apikey(登录百度账号即可获取),要完成的功能是: 1.用户回复"文章",公众号要返回文章分类的编号(比如9.科技). 2.用户回复wz9,1,腾讯     则能返回科技类文章中,关键词为"腾讯"的文章,并且显示第一页(wz9,2,腾讯则可以返回第二页,每一页返回的文章数量可以自定义,此处我放回7篇). 详细步骤: 1.回复"文章",返回所有文章分类的id.下面的代码是response

  • PHP微信开发之微信消息自动回复下所遇到的坑

    微信回复原理: 当普通微信用户向公众账号发送消息时,微信服务器首先收到用户发送的消息: 然后将用户信息和消息打包成XML格式的数据包,再将这个XML数据包通过POST方法提交到开发者设置的URL上. 疑问一:为何使用$GLOBALS["HTTP_RAW_POST_DATA"]保存POST过来的数据,而非$_POST数组? 回答: POST只能保存标准的数据类型,对于XML.SOAP或Application/Octet-steam之类的内容则无法解析. 而$GLOBALS["H

  • thinkphp微信开发(消息加密解密)

    使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解密文件和WechatCrypt.class.php进行比对发现也没有问题.用file_put_contents函数保存下解密后的文件进行分析.发现官方包解密的xml不是标准的xml格式,所以simplexml_load_string函数无法处理. /** * 对密文进行解密 * @param string $en

  • php微信开发之批量生成带参数的二维码

    带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧.  具体接口说明请参见,微信公众平台开发者文档(http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html) ,我这里就直接上代码.  演示图: 由于带参数二维码生成是有限的,所有我是按编号生成的,下次生成的时候直接累加. 另外带设置有备注,方便以后统

  • PHP微信开发之模板消息回复

    微信公众平台上,有个模板消息回复接口:可以用来实现回复特定的消息-----比如用户下了订单之后,回复给用户您的订单正在处理中...比如下面这张图: 用户进行了一些操作之后,服务号能够返回特定的消息----这就是模板消息. 要实现模板消息的回复,你的公众号必须是经过微信认证的,如果是个人的订阅号,暂时不支持微信认证.不过也不影响做测试-----你可以使用测试公众号: 使用测试号的时候,接口信息的配置就不讲了,可以参考我之前的博客. 使用维码登录测试号之后,需要用你的微信号去关注这个测试号,不然看不

  • PHP微信开发之查询城市天气

    PHP微信查询城市天气,首先,你需要找到一个获取天气的API,此处,我用的是百度的apistore,申请和使用API的网址:http://apistore.baidu.com/apiworks/servicedetail/112.html 登录百度账号,并用手机发送请求获取apikey.有了apikey,可以按照它的示例来请求城市天气了.(可以按照城市中文名,拼音,城市编号等来查询) 你可以现在本地做测试,请求完成之后,再放到自己的域名空间的脚本里.  测试的脚本例如:(注意apikey填写自己

  • PHP微信开发用Cache 解决数据缓存

    用php进行微信开发时,碰到access_token长久保存的问题,以前都是用框架里的Cache直接set.get一下就完了.现在没框架可用了,只好自己动手写一个cache暂时用. 这个Cache类用来缓存一些具有时效性的数据,比如微信基础接口的access_token.网页Auth验证的access_token等 下面的代码使用本地文件进行数据的缓存, //测试 $cache = new Cache(); $cache->dir = "../cc/"; //$cache->

  • php微信开发之上传临时素材

    本文实例为大家分享了php微信上传临时素材的具体代码,供大家参考,具体内容如下 public function uploadImg($imgUrl){ $TOKEN=$this->getAccessToken(); $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token='.$TOKEN.'&type=image'; $data = array('media'=>'@'.$imgUrl); $resu

  • 比较完整的微信开发php代码

    本文实例为大家分享了微信开发php代码,供大家参考,具体内容如下 <?php //封装成一个微信接口类 class WeixinApi { private $appid; private $appsecret; //构造方法 初始化赋值 public function __construct($appid="",$appsecret="") { $this->appid = $appid; $this->appsecret = $appsecret

  • PHP微信开发之文本自动回复

    首先,先去微信公众平台注册一个账号(注册要填的东西挺多的),注册好之后,登录进去.可以看到左侧的"开发者中心",开启开发者中心前好像还要你完善一些资料,按照步骤完善即可.进入开发者中心之后,先去编辑 修改配置,修改配置的时候,注意: URL是你自己的域名下的PHP脚本(往下读有该脚本的demo),该脚本用于和微信接口对接.比如http://www.example.com/weixin.php Token是上述脚本里的定义的一个常量,比如你的PHP脚本里定义了: define("

随机推荐