参考http://www.cnblogs.com/mchina/p/3170565.html
不过看看这些前辈写这些东西的时间,就是感慨啊,13年我还没用微信呢
这里只是简单的实现有道的翻译功能,并且是以xml形式,具体的可以看上面的网址
首先要进入有道API入口http://fanyi.youdao.com/fanyiapi
在其中点击调用数据接口,然后填写数据就可以了,这里面的应用名称最好填英文,后面会用到,至于应用的网站,我测试的时候随便填写一个都可以达到效果,所以我觉得没有什么用。
填写完后点击申请,然后会出现API key和keyfrom,然后往下,会告诉你如何接入接口
如下
数据接口
版本:1.1,请求方式:get,编码方式:utf-8
主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)
参数说明:
type - 返回结果的类型,固定为data
doctype - 返回结果的数据格式,xml或json或jsonp
version - 版本,当前最新版本为1.1
q - 要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码
only - 可选参数,dict表示只获取词典数据,translate表示只获取翻译数据,默认为都获取
注: 词典结果只支持中英互译,翻译结果支持英日韩法俄西到中文的翻译以及中文到英语的翻译
errorCode:
0 - 正常
20 - 要翻译的文本过长
30 - 无法进行有效的翻译
40 - 不支持的语言类型
50 - 无效的key
60 - 无词典结果,仅在获取词典结果生效
xml数据格式举例
http://fanyi.youdao.com/openapi.do?keyfrom=chdego&key=1347056326&type=data&doctype=xml&version=1.1&q=这里是有道翻译API
<?xml version="1.0" encoding="UTF-8"?>
<youdao-fanyi>
<errorCode>0</errorCode>
<!-- 有道翻译 -->
<query><![CDATA[这里是有道翻译API]]></query>
<translation>
<paragraph><![CDATA[Here is the youdao translation API]]></paragraph>
</translation>
</youdao-fanyi>
上面的数据格式是通过给定的网址返回的
具体代码如下
public function youdaoDic($object, $words)
{
$keyfrom = 'chdego';
$apikey = '134056326';
$doctype = 'xml';
// 这个地址返回的是XML文件
$url_youdao = 'http://fanyi.youdao.com/openapi.do?keyfrom=' . $keyfrom . '&key=' . $apikey;
$url_youdao = $url_youdao . '&type=data&doctype=' . $doctype . '&version=1.1&q=' . $words;
// 将XML文件载入对象中
$xmlStyle = simplexml_load_file($url_youdao);
$errorCode = $xmlStyle->errorCode; // 获取错误码
$paras = $xmlStyle->translation->paragraph; // 获取翻译的内容
switch ($errorCode) {
case 0:
return $this->transmitText($object, $paras);
break;
case 20:
return $this->transmitText($object, '要翻译的文本过长');
break;
case 30:
return $this->transmitText($object, '无法进行有效翻译');
break;
case 40:
return $this->transmitText($object, '不支持的语言类型');
break;
case 50:
return $this->transmitText($object, '无效的key');
break;
case 60:
return $this->transmitText($object, '无词典结果,仅在获取词典结果生效');
break;
}
}
最后附上第二次改进后的代码
https://github.com/moluchase/WeChatTest/blob/master/wechattest.php