Home > WeChat Applet > WeChat Development > PHP WeChat development Youdao translation example code

PHP WeChat development Youdao translation example code

高洛峰
Release: 2017-03-21 15:49:49
Original
1580 people have browsed it

First of all, you need to go to the Youdao Translation API official website to apply for a key: http://fanyi.youdao.com/openapi?path=data-mode
After you get the key, you can start The queried data is obtained from the API (return json or XML, depending on personal preference, here I use json)
Below I will directly give the code to implement translation in the responseMsg method.

 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(); 
 
   }
Copy after login

Note: The information returned by the subscription account you are following must have a new line and use "\n". In your website space, modify your code and send a message such as "Translation Hamburger" to the subscription account. The subscription account will call Youdao's API to return the translation result, which can be translated between Chinese and English, or it can be a sentence.

The above is the detailed content of PHP WeChat development Youdao translation example code. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template