PHP练习——有道翻译小程序
今天呢,小编来给大家介绍一下如何使用php语言结合有道翻译API来制作一个网页版的有道翻译小程序。
首先呢,先让我们来看一下有道翻译API吧
大家可以通过这个链接访问完整的有道翻译API,下面呢小编就只展示了这个小程序使用到的信息
- 数据接口
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
版本: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 - 无词典结果,仅在获取词典结果生效
- 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":["良好","善","美好"]
},
{...}
]
}
大家在这里注意一下json里面的数据格式和信息,下面会用到。
好啦,基本的信息呢已经介绍完毕了,宝宝们可以前往有道翻译官网去申请有道翻译的使用接口,如果有接口的宝宝们就往下面继续看吧,大家可以参考下面的顺序来实现。
- 首先,我们先要建立一个基本的HTML界面,来呈现这些基本数据
- 然后呢,我们要在.php文件中加入以下代码,以实现翻译功能
- 再然后,就是我们的CSS环节啦,通过添加CSS样式,我们就可以使得自己的界面更丰富啦
下面让我们来看一下这里面关键的代码吧
- 接口的调用:
// keyfrom和apikey是有道开放平台提供的,$word 是我们将要翻译的信息
$keyfrom = "***";
$apikey = "****";
// 通过有道翻译json格式来显示传值
$url_youdao = 'http://fanyi.youdao.com/fanyiapi.do?keyfrom='.$keyfrom.'&key='.$apikey.'&type=data&doctype=json&version=1.1&q='.$word;
- json的使用
$json = file_get_contents($url_youdao);
- 接口内容的输出
1.获取接口内容
// 说明:假如是写成$obj = json_decode($json,true);
// 则此时obj就是一个数组
// 但是不加true,则是将json数据转换成对象类的形式,即返回的是对象。
$obj = json_decode($json); //用对象的方式获取
$data = json_decode($json, true); //用数组的方式获取
2.判断返回的数据是否正常—— errorCode
$errorCode = $obj->errorCode;
if(isset($errorCode)){ //判断返回的数据是否正常,errorCode的值前面提到过了,大家回看一下就明白了
switch ($errorCode){
// 说明返回的数据正常
case 0:
$trans = $obj->translation[0];
break;
case 20:
$trans = '要翻译的文本过长';
break;
case 30:
$trans = '无法进行有效的翻译';
break;
case 40:
$trans = '不支持的语言类型';
break;
case 50:
$trans = '无效的key';
break;
default:
$trans = '出现异常';
break;
}
}
3.输出接口中的内容,这里以’web’即网络释义字段为例:
if(isset($data['web'])){ //判断数据是否存在
$result .= "网络释义: \n";
$web = $data['web'];
for($x = 0 ; $x < 3; $x ++){ 大家可以通过用var_dump()函数来输出$arr,就明白了
$w = $web[$x];
foreach($w['value'] as $key => $value){
$result .= $value." ";
}
$result .= $w['key']."\n";
}
}
return $result;
}
小编在这里提醒一下大家,这里面的数组比较复杂,建议大家仔细的看一看输出的方式。
- 外部CSS文件的引入
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"***.css\" />"; //引入外部css文件
以上就是小编认为比较重要的点,希望会对大家有所帮助,最后,大家来看一看小编的成果吧:
好啦,以上就是小编给大家分享的内容,希望会对大家的学习有帮助哦~