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文件

以上就是小编认为比较重要的点,希望会对大家有所帮助,最后,大家来看一看小编的成果吧:
PHP练习——有道翻译小程序
好啦,以上就是小编给大家分享的内容,希望会对大家的学习有帮助哦~