• 微信公众平台开发5:翻译功能


    思路分析

    首先对用户发送过来的消息进行判断,判断消息里是否含有“翻译”关键字,如果有,则提取翻译内容,然后调用网络上开放的翻译API 进行翻译。

    我们用有道翻译API:http://fanyi.youdao.com/openapi?path=data-mode

    记下申请时的API key 和keyfrom

    14370499012_56ecd40cd5_o.jpg

    关键字判断与待翻译内容读取

    翻译消息的格式是 “翻译+待翻译内容”,所以首先截取前两个字,判断是否为 “翻译” 关键字。

    $str_trans=mb_substr($keyword,0,2,"UTF-8");

    从消息的开头开始截取,截取两个字符,然后判断是否为 “翻译” 关键字。

    $str_valid=mb_substr($keyword,0,-2,"UTF-8");

    从消息的开头开始,截掉末尾的两个字符,判断是否只输入“翻译”两字,若没有翻译内容,则输入的消息也不正确。

    接下来进行待翻译内容提取:

    $word=mb_substr($keyword,2,200,"UTF-8");

    从消息的开头第3个字符开始截取,截取200个字符(API要求字符长度不能超过200),截取出来的即为待翻译内容。注意要翻译的文本,必须是UTF-8编码,需要进行urlencode编码,不然可能返回60错误。

    接着调用函数进行翻译。

    //调用有道词典
    $contentStr=$this->youdaoDic($word);

    具体实现

    数据接口:

    http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本 

    将上面的keyfrom 和key换成上面申请的内容,然后选择doctype,再输入要翻译的文本,就可以调用有道翻译API 进行翻译了。

    有道翻译提供了三种数据格式,这里我们只讲解两种,即xml 和json。

    xml 格式

    publicfunction youdaoDic($word){           $keyfrom="orchid";//申请APIKEY时填的网站名称内容
        $apikey="YourApiKey";//从有道申请的APIKEY           //有道翻译-xml格式
    $url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=xml&version=1.1&q='.$word;           $xmlStyle=simplexml_load_file($url_youdao);           $errorCode=$xmlStyle->errorCode;           $paras=$xmlStyle->translation->paragraph;// 获取翻译内容           if($errorCode==0){return$paras;}else{return"无法进行有效的翻译";}}

    json 格式

    http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=good {"errorCode":0"query":"good",     "translation":["好"], // 有道翻译     "basic":{// 有道词典-基本词典         "phonetic":"gʊd""uk-phonetic":"gʊd"//英式发音         "us-phonetic":"ɡʊd"//美式发音         "explains":["好处",             "好的""好"]},     "web":[// 有道词典-网络释义         {"key":"good",             "value":["良好","善","美好"]},         {...}]} 代码:
    publicfunction youdaoDic($word){           $keyfrom="orchid";//申请APIKEY时所填的网站名称内容
    $apikey="YourApiKey";//从有道申请的APIKEY           //有道翻译-json格式
    $url_youdao='http://fanyi.youdao.com/openapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=json&version=1.1&q='.$word;           $jsonStyle=file_get_contents($url_youdao);           $result=json_decode($jsonStyle,true);// 为 TRUE 时,返回 array           $errorCode=$result['errorCode'];           $trans='';           if(isset($errorCode)){//               switch($errorCode){case0:$trans=$result['translation']['0'];break;case20:$trans='要翻译的文本过长';break;case30:$trans='无法进行有效的翻译';break;case40:$trans='不支持的语言类型';break;case50:$trans='无效的key';break;default:$trans='出现异常';break;}}return$trans;       }

    与有道词典的翻译对比如下图所示:

    14368655671_01c315a5c3_o.png

    14370499272_1109779c16_o.png

    14185366638_a452b9f693_o.png

    14370499102_cb342dee97_o.png

    14185523317_85122ee8ce_o.png

    14185331629_34c76c736e_o.png


    艺搜参考

    在线格式化json

    http://www.cnblogs.com/mchina/p/3170565.html

    http://www.crazyant.net/920.html

    http://stackoverflow.com/questions/8068220/check-if-array-is-null-or-not-in-php

  • 相关阅读:
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Arctic Network POJ
    Truck History POJ
    QS Network ZOJ
  • 原文地址:https://www.cnblogs.com/elesos/p/5924506.html
Copyright © 2020-2023  润新知