Home >Backend Development >PHP Tutorial >Translation function developed by PHP WeChat

Translation function developed by PHP WeChat

*文
*文Original
2017-12-29 18:22:541631browse

This article mainly introduces in detail the relevant information on the simple implementation of translation in PHP WeChat development. Interested friends can refer to it. I hope to be helpful.

First of all, you need to go to the official website of Youdao Translation API to apply for a key: http://fanyi.youdao.com/openapi?path=data-mode
After getting the key, you can start to use the API The queried data is obtained (return json or XML, depending on personal preference, I use json here)
Below I will directly give the code to implement translation in the responseMsg method. If you are coming into contact with the WeChat API for the first time and don’t understand what this method does, please click on PHP WeChat Development Text Automatic Reply

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 == &#39;event&#39;){ //如果XML信息里消息类型为event
    if($postObj->Event == &#39;subscribe&#39;){ //如果是订阅事件
     $contentStr = "欢迎";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
     echo $resultStr;
     exit();
    }
   }

   $which = mb_substr($keyword, 0, 2, &#39;UTF-8&#39;);//获取要返回什么样的信息

   if($which== "翻译"){ //如果要进行翻译
    $fanyi = $which;
    $search = str_replace($fanyi, &#39;&#39;, $keyword); //要翻译的关键字

    $key = ""; //在有道API申请的key
    $keyfrom = ""; //与key对应
    $url = &#39;http://fanyi.youdao.com/openapi.do?keyfrom=&#39; . $keyfrom . &#39;&key=&#39; . $key . &#39;&type=data&doctype=json&version=1.1&q=&#39; . urlencode($search);//调用有道翻译API
    
    $json = file_get_contents($url);//也可以用curl来获取
    $res = json_decode($json, true);

    /**
     * 以下从返回的数据中提取翻译结果
     */
    $contentStr = &#39;【查询】&#39; . $res[&#39;query&#39;] . "\n";
    $contentStr .= "【翻译】\n" . $res[&#39;translation&#39;][0] . "\n";

    $str = &#39;&#39;;
    foreach($res[&#39;basic&#39;][&#39;explains&#39;] as $v){
     $str .= $v . "\n";
    }
    $contentStr .= "【基本释义】\n" . $str;


    if(isset($res[&#39;web&#39;])){

     foreach($res[&#39;web&#39;] as $kk=>$vv){
      sort($vv);
      $res[&#39;web&#39;][$kk] = $vv; //调节字段顺序
     }

     $str = &#39;&#39;;
     foreach($res[&#39;web&#39;] 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(); 

   }

Note: The information returned by the subscription account you are following needs to be line-wrapped, and you must 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.

Related recommendations:

How to verify token, reply content, and push messages for WeChat public account in PHP

PHP WeChat development to obtain city weather

WeChat development template message reply

The above is the detailed content of Translation function developed by PHP WeChat. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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